SQL/MySQL - 如何获得唯一的周数(独立于年份)?

Kyl*_*son 3 mysql sql

我想从星期一开始作为一周的第一天从DATE获得一周的数字.虽然WEEK()可以部分实现这一点,但我希望每周都能得到唯一的识别.即,而不是在52或53滚动到0或1,继续计数到第54,55等等.

在SQL中实现此目的的最佳方法是什么?

JJJ*_*JJJ 9

如果周数应该是连续的(可能用于计算时间跨度),您可以选择过去应该是第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)

  • 可以使用[YEARWEEK()](http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_yearweek)而不是连接... (2认同)