a12*_*234 1 sql-server date sql-server-2012
我有一个SQL查询...
当我从今天的日期开始运行此查询时,我将获得从2016年7月22日返回的记录.
SELECT test_id, lat, long
FROM testDB.src.test_20
WHERE test_date >= DATEADD(day,-32, GETDATE()) and lat is not null and long is not null
Run Code Online (Sandbox Code Playgroud)
当我将DATEADD功能更改为-31时,我将从2016年7月23日获得记录.
SELECT test_id, lat, long
FROM testDB.src.test_20
WHERE test_date >= DATEADD(day,-31, GETDATE()) and lat is not null and long is not null
Run Code Online (Sandbox Code Playgroud)
我可能不清楚DATEADD函数是如何工作的.我认为使用-31时会发生的是从今天到第31天的记录,包括2016年7月22日的记录将被退回(从31天前的今天起是2016年7月22日).
为什么使用-31时未返回2016年7月22日的记录?
SQL Server Management Studio 2012
仅考虑该表达式:
select DATEADD(day,-31, GETDATE())
2016-07-22 16:18:42.697
Run Code Online (Sandbox Code Playgroud)
然后,您查找test_date
大于该日期时间的行.
也许你需要消除时间部分,只考虑几天:
select DATEADD(day,-31, cast(GETDATE() as date))
2016-07-22
Run Code Online (Sandbox Code Playgroud)
和日期时间一样2016-07-22 10:15:00.420
.
归档时间: |
|
查看次数: |
479 次 |
最近记录: |