我想从以星期一作为一周的第一天开始的 DATE 获取一周的数量。虽然 WEEK() 可以部分实现这一点,但我希望每周都能被唯一标识。即,与其从 52 或 53 滚动到 0 或 1,不如继续计数到第 54 周、第 55 周等。
在 SQL 中完成此任务的最佳方法是什么?
如果周数应该是连续的(可能是为了计算时间跨度),您可以选择过去的任意一个星期日,应该是第 1 周,计算从那天起的天数,然后除以 7。(选择星期日将使星期一成为本周开始。)
SELECT CEIL( DATEDIFF( '2013-01-04', '1970-01-04' ) / 7 ) AS week; # 2244
如果您只需要唯一标识,则可以使用YEARWEEK()
get201253
等201301
。
SELECT YEARWEEK( '2013-01-04', 1 ) AS week; # 201301
我使用以下解决方案,从一个月和一周制作一个唯一的字符串
id=str(time.month)+str(time.isocalendar()[1])