我喜欢 MySQL 中的 week 函数,但在我的情况下,我想知道一行在一个月中的哪一周。我使用了这个解决方案:
run_date
时间戳在哪里2021-02-25 00:00:00
concat (
date_format(run_date, '%Y-%m'),
' wk ',
(week(run_date,1) - ( week(date_format(run_date, '%Y-%m-01')) - 1))
) as formatted_date
这输出:
2021-02-23 ---> 2021-02 wk 4
2021-02-25 ---> 2021-02 wk 4
2021-02-11 ---> 2021-02 wk 2
2021-03-02 ---> 2021-03 wk 1
这背后的想法是,我想(相对确定地)知道该日期是在该月的哪一周发生的?
所以我们连接:
date_format(run_date, '%Y-%m')
要得到2021-02
然后我们添加文字文本字符串wk
然后我们使用:
week(run_date, 1)
获取该1
记录的周(从星期一开始),(这可能是7
因为 02/21/2021 是一年中的第 7 周,我们减去同一周的第一天的任何一周月 - week()
for2021-02-01
是 5,因为它是在一年中的第 5 周:
(week(date_format(run_date, '%Y-%m-01'))
不幸的是,这将从 0 开始计数,这是人们不喜欢的,所以我们从连接结果的最后一部分减去 1,这样“周”就从 1 开始。