【发布时间】:2016-12-29 05:18:58
【问题描述】:
我有一个 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
当我将 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
我可能不清楚 DATEADD 函数的工作原理。我认为使用 -31 时会发生的情况是,将返回从今天到负 31 天前的记录,包括 2016 年 7 月 22 日的记录(因为从今天开始的 31 天前是 2016 年 7 月 22 日)。
为什么使用 -31 时不返回 2016 年 7 月 22 日的记录?
SQL Server 管理工作室 2012
【问题讨论】:
-
DATEADD(day,-32, GETDATE())也返回时间戳,因此test_date的时间戳应该大于运行时的当前时间
标签: sql-server date sql-server-2012