首页 > 解决方案 > datediff 奇怪的东西 - SQL Server

问题描述

测试:

    select datediff(week, '20190104 23:01:11.821', '20190105 23:01:11.821')
    select datediff(week, '20190104 23:01:11.821', '20190106 23:01:11.821')
    select datediff(week, '20190104 23:01:11.821', '20190107 23:01:11.821')
    select datediff(week, '20190104 23:01:11.821', '20190108 23:01:11.821')
    select datediff(week, '20190104 23:01:11.821', '20190109 23:01:11.821')
    select datediff(week, '20190104 23:01:11.821', '20190113 23:01:11.821')

这返回

    0
    1
    1
    1
    2

我只在第一个返回值中看到常识。到底是怎么回事?例如,为什么最后一个返回 2 周?!其他人怎么回报他们回报的?

标签: sqlsql-server

解决方案


Datediff 计算跨越边界的频率。

SELECT DATEPART(WEEK, '20190104 23:01:11.821')
,       DATEPART(WEEK, '20190106 23:01:11.821')

退货

1   2

所以越过了一周的边界,所以 datediff 返回 1。


推荐阅读