3

我想从以星期一作为一周的第一天开始的 DATE 获取一周的数量。虽然 WEEK() 可以部分实现这一点,但我希望每周都能被唯一标识。即,与其从 52 或 53 滚动到 0 或 1,不如继续计数到第 54 周、第 55 周等。

在 SQL 中完成此任务的最佳方法是什么?

4

2 回答 2

9

如果周数应该是连续的(可能是为了计算时间跨度),您可以选择过去的任意一个星期日,应该是第 1 周,计算从那天起的天数,然后除以 7。(选择星期日将使星期一成为本周开始。)

SELECT CEIL( DATEDIFF( '2013-01-04', '1970-01-04' ) / 7 ) AS week;  # 2244

如果您只需要唯一标识,则可以使用YEARWEEK()get201253201301

SELECT YEARWEEK( '2013-01-04', 1 ) AS week;  # 201301
于 2013-01-04T18:30:31.750 回答
0

我使用以下解决方案,从一个月和一周制作一个唯一的字符串

id=str(time.month)+str(time.isocalendar()[1])
于 2019-06-21T01:39:17.013 回答