【发布时间】:2015-08-03 18:29:13
【问题描述】:
当使用dateadd/datdiff 技巧来舍入日期时,我总是得到非常可预测和可理解的结果,包括几天和几个月。我现在几周后第一次使用它,并且正在经历一些我没有预料到的事情。
2015 年 7 月 19 日和 26 日似乎进入了我认为的下周。以下示例说明了第二列中的实际行为和第三列中的预期行为。我试图了解为什么和如何存在差异。
declare @n as table ([N] [int] )
insert into @n ( [N] ) values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15)
select n
, dateadd(dd,n,'2015-jul-17')
, dateadd(wk,datediff(wk,0, dateadd(dd,n,'2015-jul-17') ),0)
, dateadd(dd,datediff(dd,0, dateadd(dd,n,'2015-jul-17') )/7*7,0)
from @n
order by n
【问题讨论】:
标签: sql sql-server date rounding