首页 > 解决方案 > 带日期的自定义周数

问题描述

如何从 2016 年 5 月 1 日开始第 1 周,在 2017 年 4 月 30 日结束第 52 周。例如:2016 年 5 月 1 日 - 2016 年 5 月 7 日应该是第 1 周。SQL Server 相对于会计年度计算周数。这可能吗?我正在使用 SQL Server 2016。

select order_date,
datepart(week from order_date)weekorder, product_code 
from my_table
where  order_date > '4/30/2016'
and order_date < '5/1/2017'

order_date  weekorder   product_code    
2017-03-01      9         16PSS  
2016-11-26      48         16PZS
2016-11-18      47        16PSST
2016-05-31      23        16PRS

要求:

order_date    weekorder    product_code 
2017-03-01      47         16PSS     
2016-11-26      22         16PZS
2016-11-18      21         16PSST
2016-05-31      5          16PRS

标签: sqlsql-server

解决方案


好吧,您可以使用日期算术:

select order_date,
       datediff(day, '2016-04-30', order_date) / 7 as weekorder,
       product_code 
from my_table
where order_date > '2016-04-30' and
      order_date < '2017-05-01';

推荐阅读