在 MySQL 中,我們可以使用 WEEK 函數來獲取指定日期所在的周數。WEEK 函數支持兩個參數:日期和模式。
當只有一個參數時,WEEK 函數將使用默認模式 0,這意味著它將使用 Sunday 作為一周的起始日期,并返回周數(1 ~ 53)。
SELECT WEEK('2022-01-01'); -- 返回 52
在上面的示例中,我們將 '2022-01-01' 作為參數傳遞給 WEEK 函數,并從中獲取了所在的周數,因為這個日期所在的周是 2021 年的第 52 周。
但是,如果我們需要使用不同的模式來獲取周數,則可以指定第二個參數來實現。下表列出了 MySQL 支持的 WEEk 模式:
模式 | 星期幾作為第一天 | 返回值范圍 | |------|-----------------|--------------| | 0 | Sunday | 1 ~ 53 | | 1 | Monday | 0 ~ 53 | | 2 | Sunday | 0 ~ 53 | | 3 | Monday | 1 ~ 53 | | 4 | Sunday | 1 ~ 52 或 0 | | 5 | Monday | 0 ~ 52 或 53 | | 6 | Sunday | 0 ~ 52 或 53 | | 7 | Monday | 1 ~ 52 或 0
在指定模式時,我們可以在日期參數的前面添加關鍵字 MODE_,并在后面跟著模式值。
SELECT WEEK('2022-01-01', MODE_1); -- 返回 1
在上面的示例中,我們將 '2022-01-01' 作為日期參數傳遞給 WEEK 函數,并指定了模式 1,它將 Monday 作為一周的起始日期,并返回周數(0 ~ 53)。