我在表中有一些订单,2011 年的最后订单日期是 12 月 20 日。
我正在使用 sql 命令来计算给定周内的订单数:
SELECT CONVERT(VARCHAR(3),DATENAME(week,convert(datetime,order_date,103))) AS week,
COUNT(1) as orders
FROM order_table
where DATENAME(YEAR,convert(datetime,order_date,103)) = '2011'
GROUP BY CONVERT(VARCHAR(3),DATENAME(week,convert(datetime,order_date,103)))
order by week asc
它返回给我以下一些结果:
Week | Orders
41 | 42
42 | 110
43 | 115
...
...
51 | 155
52 | 15
问题是我提到的 2011 年的最后一个订单日期是 2011 年 12 月 20 日,不能是第 52 周,所以必须是第 51 周。
我有一些其他统计数据(来自另一个系统,而不是 SQL 服务器),它给了我一些其他数字,上周是 51,我毫不怀疑这是正确的。因此,如果人们正在寻找两者,将会有疑问!
任何人都有任何想法或知道如何对此进行排序?
谢谢,
最佳答案
2011 年 12 月 20 日的 iso_week 是 51。所以也许这就是您所需要的。
SELECT datepart(iso_week, '2011-12-20')
关于sql-server-2008 - SQL Server 返回意外的周数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9620970/