【发布时间】:2019-07-18 03:38:30
【问题描述】:
我使用 DATEDIFF 函数使用 YEAR 和 MONTH 间隔运行以下查询,但相应地修改查询的右侧,以便我认为它们应该相同。 dbo.logs 有 2486512 行。
SELECT count(*) FROM dbo.logs
WHERE DATEDIFF(YEAR, DT, GetDate()) <= 1;
result: 595712
SELECT count(*) FROM dbo.logs
WHERE DATEDIFF(MONTH, DT, GetDate()) <= 12;
result: 334773
为什么我会得到如此截然不同的结果?我认为指定 12 个月将返回与 1 年相同的行数。
【问题讨论】:
-
DATEDIFF(MONTH, DT, GetDate()) 会给你月份部分
-
请参考文档docs.microsoft.com/en-us/sql/t-sql/functions/…
This function returns the count (as a signed integer value) of the specified datepart boundaries crossed between the specified startdate and enddate。DATEDIFF(YEAR, DT, GetDate()) <= 1的含义,它包括DT=2018-01-01直到今天。其中DATEDIFF(MONTH, DT, GetDate()) <= 12仅包括2018-08-01直到今天
标签: sql sql-server datediff