为什么dateiff比实际差异少1天?

时间:2014-10-20 17:34:23

标签: sql sql-server

考虑以下SQL代码片段:

Select DATEDIFF(dd, '2014-09-22 09:14:01.850','2014-09-24 17:14:53.243') -- 1

这会返回“2”,但实际上我想要“3”,因为我正在计算员工参加的总天数。即在上述情况下,他已参加 3 天,但datediff显示2.有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:5)

带有dd参数的DATEDIFF返回2个日期之间的日期边界数。

所以DATEDIFF(dd, '2014-09-22 09:14:01.850','2014-09-24 17:14:53.243')将返回2 - 因为它正在计算第23和第24。 如果你想计算第22,第23和第24,那么只需加1,例如

Select DATEDIFF(dd, '2014-09-22 09:14:01.850','2014-09-24 17:14:53.243') + 1

答案 1 :(得分:0)

由于某些未知原因DATEDIFF(dd, ...函数计算基于24小时工作日的天数。如果剩下不到24小时,则显示零。

你应该只使用你的时间的日期部分。

(这是一个旧帖子,但从未正确回答)