如何在 SQL Server 中获取从今天起过去 30 天的数据

编程


我必须获得从过去 30 行到今天的所有行的记录。 我已经尝试过,但不起作用

我尝试过的:

从 dsr_data 选择 date_time,其中 date_time >= CONVERT(Varchar(100), DATEADD(DAY,-30,GETDATE()),103) 和 date_time <= CONVERT(varchar(100), getdate(),103)

解决方案3

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

解决方案1

你为什么使用 CONVERT?
唯一可能的原因与它不起作用的原因相同:您将日期存储为 NVARCHAR 列,而不是 DATE、DATETIME 或 DATETIME2。

当您比较字符串时,比较完全基于两个字符串中的第一个不同字符:并且由于您专门选择以 103 格式(即“dd/MM/yyyy”)格式化日期,因此比较将完全是垃圾 -例如,年份将最后检查,因此 31/01/2017 将早于 31/12/1952,因为比较将基于月份的第一位数字,并且“0”小于“1”

更改您的数据库。 始终以适当的数据类型存储数据:这意味着整数值存储在 INT 列中,日期信息存储在 DATE、DATETIME 或 DATETIME2 列中,等等。 如果你不这样做,这只是许多令人讨厌的问题中的第一个,等待着你的到来……

解决方案2

使用下面的查询。

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

コメント

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