我想从星期一开始作为一周的第一天从DATE获得一周的数字.虽然WEEK()可以部分实现这一点,但我希望每周都能得到唯一的识别.即,而不是在52或53滚动到0或1,继续计数到第54,55等等.
在SQL中实现此目的的最佳方法是什么?
如果周数应该是连续的(可能用于计算时间跨度),您可以选择过去应该是第1周的任意星期日,计算自那天起的天数,并除以7.(选择星期日将使星期一为一周的开始.)
SELECT CEIL( DATEDIFF( '2013-01-04', '1970-01-04' ) / 7 ) AS week; # 2244
Run Code Online (Sandbox Code Playgroud)
如果你需要的只是唯一标识,你可以YEARWEEK()用来获取201253,201301等等.
SELECT YEARWEEK( '2013-01-04', 1 ) AS week; # 201301
Run Code Online (Sandbox Code Playgroud)