程序员在使用diffdate函数时是应该使用白天还是星期?在我看来,他们的工作方式基本相同。人们可以简单地使用任何更适合他们需要的人。但是,根据此查询,即使日期非常相似,DIFFDATE也会得到不同的结果。 (特别是第3行和第8行)我不明白为什么第3行会获得8天但只有一周而第8行也会获得8行但只有1周。
SELECT OrderDate, ShipDate, DateDiff(week, OrderDate, ShipDate)as week, DateDiff(day, OrderDate, ShipDate) as day
FROM Sales.SalesOrderHeader
Where DateDiff(day, OrderDate, ShipDate) > 7
答案 0 :(得分:3)
SQL Server的datediff()
函数可能不会按照您的想法执行。
它计算在两个日期时间之间传递的边界数。因此,2014-01-01 23:59和2014-01-02 00:01之间的datediff(day)
为1天。 2014-01-01 00:01和2014-01-01 23:59的datediff(day)
为0天。
同样适用于周。
这是您所看到的行为。它有详细记录here。
答案 1 :(得分:2)
嗯,星期一,1日到星期二,9日是一周(你进入下一周),但是星期日,7日到星期一,15日是2周(你跳过整整一周,我的周从星期一开始)。
这就像从22:00到23:00移动一小时是0天的差异,但是从23:45移动到0:45是1天的差异。
或(多年)从12月30日到12月31日与12月31日到1月1日。