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

programación

[ad_1]

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()

[ad_2]

コメント

Título y URL copiados