Cómo obtener datos de los últimos 30 días a partir de la fecha de hoy en el servidor SQL

programación


Tengo que registrar todas las filas desde las últimas 30 hasta la de hoy. He probado esto pero no funciona

Lo que he probado:

seleccione fecha_hora de dsr_data donde fecha_hora >= CONVERT(Varchar(100), DATEADD(DAY,-30,GETDATE()),103) y fecha_hora <= CONVERT(varchar(100), getdate(),103)

Solución 3

SELECT date_time  FROM dsr_data
    WHERE date_time
               between DATEADD(DAY,-30,GETDATE()) and  GETDATE(); 

Solución 1

¿Por qué estás usando CONVERTIR?
La única razón posible es la misma razón por la que no funciona: está almacenando sus fechas como columnas NVARCHAR en lugar de DATE, DATETIME o DATETIME2.

Cuando compara cadenas, la comparación se basa completamente en el primer carácter diferente de las dos cadenas: y dado que está seleccionando específicamente formatear la fecha en formato 103, que es “dd/MM/aaaa”, la comparación será totalmente basura. el año se comprobará en último lugar, por ejemplo, por lo que el 31/01/2017 será anterior al 31/12/1952 porque la comparación se basará en el primer dígito del mes y ‘0’ es menor que ‘1’

Cambia tu base de datos. Almacene siempre los datos en tipos de datos apropiados: eso significa valores enteros en columnas INT, información de fecha en columnas DATE, DATETIME o DATETIME2, etc. Si no lo hace, este es sólo el primero de muchos problemas muy desagradables que le esperan en el futuro…

Solución 2

Utilice la siguiente consulta.

SELECT date_time  FROM  dsr_data
WHERE date_time  >= DATEADD(day,-30, getdate()) 
and   date_time  <= getdate()

コメント

タイトルとURLをコピーしました