una tipo obtener mes mayor manejo insertar hora fechas fecha dato comparar año sql-server date-arithmetic

sql server - tipo - declaración de eliminación de sql donde la fecha es mayor a 30 días



sql server comparar fechas mayor (7)

Deseo encontrar una declaración SQL que cuando se ejecute elimine los campos que tienen más de 30 días.

Mi tabla "eventos" tiene un campo "fecha" que contiene la fecha y la hora en que se insertó en la base de datos.

No estoy en casa ahora mismo, así que no puedo probar esto. es esto bueno ?

SELECT * from Results WHERE [Date] >= DATEADD(d, -30, getdate())


Aunque el DATEADD es probablemente la forma más transparente de hacer esto, vale la pena señalar que simplemente getdate()-30 también será suficiente.

Además, ¿está buscando dentro de 30 días, es decir, incluyendo horas, minutos, segundos, etc.? O 30 días a partir de la medianoche de hoy (p. Ej. 12/06/2010 00: 00: 00.000). En cuyo caso, podrías considerar:

SELECT * FROM Results WHERE convert(varchar(8), [Date], 112) >= convert(varchar(8), getdate(), 112)


En lugar de convertir a varchar para obtener solo el día ( convertir (varchar (8), [Fecha], 112) ), prefiero mantenerlo en un campo de fecha y hora y solo en la fecha (sin la hora).

SELECT * FROM Results WHERE CONVERT(date, [Date]) >= CONVERT(date, GETDATE())


Para eliminar registros de una tabla que tienen un valor de fecha y hora en Date_column con más de 30 días, use esta consulta:

USE Database_name; DELETE FROM Table_name WHERE Date_column < GETDATE() - 30

...o esto:

USE Database_name; DELETE FROM Table_name WHERE Date_column < DATEADD(dd,-30,GETDATE())

Para eliminar registros de una tabla que tienen un valor de fecha y hora en Date_column anterior a 12 horas:

USE Database_name; DELETE FROM Table_name WHERE Date_column < DATEADD(hh,-12,GETDATE())

Para eliminar registros de una tabla que tienen un valor de fecha y hora en Date_column anterior a 15 minutos:

USE Database_name; DELETE FROM Table_name WHERE Date_column < DATEADD(mi,-15,GETDATE())

De: http://zarez.net/?p=542


Podemos usar esto:

DELETE FROM table_name WHERE date_column < CAST(CONVERT(char(8), (DATEADD(day,-30,GETDATE())), 112) AS datetime)

Pero una mejor opción es usar:

DELETE FROM table_name WHERE DATEDIFF(dd, date_column, GETDATE()) > 30

El primero no es sargable (es decir, funciona en el lado derecho de la expresión, por lo que no puede usar el índice) y toma 30 segundos, el último es sargable y toma menos de un segundo.


También podrías usar

SELECCIONE * de los Resultados DÓNDE fecha <AHORA () - INTERVALO 30 DÍAS;


También puede establecer entre dos fechas:

Delete From tblAudit WHERE Date_dat < DATEADD(day, -360, GETDATE()) GO Delete From tblAudit WHERE Date_dat > DATEADD(day, -60, GETDATE()) GO


Use DATEADD en su cláusula WHERE:

... WHERE date < DATEADD(day, -30, GETDATE())

También puede utilizar la abreviatura d o dd lugar de day .