【发布时间】:2012-02-24 21:26:44
【问题描述】:
使用语法
dateadd(week, datediff(week, 0, CURRENT_TIMESTAMP),0)
按周对数据进行分组,似乎将一周的最后一天放入下一周。
举个简单的例子
print dateadd(week, datediff(week, 0, '27 jan 2012 00:00'),0)
print dateadd(week, datediff(week, 0, '28 jan 2012 00:00'),0)
print dateadd(week, datediff(week, 0, '29 jan 2012 00:00'),0)
print dateadd(week, datediff(week, 0, '30 jan 2012 00:00'),0)
print dateadd(week, datediff(week, 0, '31 jan 2012 00:00'),0)
我希望回来
Jan 23 2012 12:00AM
Jan 23 2012 12:00AM
Jan 23 2012 12:00AM
Jan 30 2012 12:00AM
Jan 30 2012 12:00AM
或
Jan 22 2012 12:00AM
Jan 22 2012 12:00AM
Jan 29 2012 12:00AM
Jan 29 2012 12:00AM
Jan 29 2012 12:00AM
我猜取决于 DATEFIRST 设置
不管怎么返回
Jan 23 2012 12:00AM
Jan 23 2012 12:00AM
Jan 30 2012 12:00AM
Jan 30 2012 12:00AM
Jan 30 2012 12:00AM
即1 月 29 日是 1 月 30 日这一周,而不是预期的 1 月 23 日或 1 月 30 日。
我显然错过了一些东西,但想不出它可能是什么。
【问题讨论】:
-
当然,关键是它似乎与自身不一致
-
我阅读了“set datefirst”,发现您已经知道“一周的第一天”,所以我删除了我的评论。
标签: sql sql-server