考虑以下SQL代码片段:
Select DATEDIFF(dd, '2014-09-22 09:14:01.850','2014-09-24 17:14:53.243') -- 1
这会返回“2”,但实际上我想要“3”,因为我正在计算员工参加的总天数。即在上述情况下,他已参加 3 天,但datediff
显示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小时,则显示零。
你应该只使用你的时间的日期部分。
(这是一个旧帖子,但从未正确回答)