在本教學中,您將學習如何使用MySQL WEEK
函式來獲取日期的週數。
通常,一年的正常年份為365
天,閏年為366
天。一年又可以分為許多周,每週有7
天。 所以一年,我們經常有365/7 = 52
周,周範圍是從1
到52
。
要檢視給定日期屬於哪個週數,您可以使用WEEK
函式,如下所示:
WEEK(date, mode);
WEEK函式接受兩個引數:
date
是要獲取周數的日期。mode
是一個可選引數,用於確定週數計算的邏輯。它允許您指定本週是從星期一還是星期日開始,返回的週數應在0
到52
之間或0
到53
之間。如果忽略mode
引數,預設情況下WEEK
函式將使用default_week_format
系統變數的值。
要獲取default_week_format
變數的當前值,請使用SHOW VARIABLES
語句如下:
mysql> SHOW VARIABLES LIKE 'default_week_format';
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| default_week_format | 0 |
+---------------------+-------+
1 row in set
在我們的伺服器中,default_week_format
的預設值為0
,下表格說明了mode
引數如何影響WEEK
函式:
模式 | 一週的第一天 | 範圍 |
---|---|---|
0 | 星期日 | 0-53 |
1 | 星期一 | 0-53 |
2 | 星期日 | 1-53 |
3 | 星期一 | 1-53 |
4 | 星期日 | 0-53 |
5 | 星期一 | 0-53 |
6 | 星期日 | 1-53 |
7 | 星期一 | 1-53 |
上表中「今年有4天以上」表示:
4
天或更多天,那麼這週是第1
周。WEEK
函式返回一個週數,遵循ISO 8601:1988
請參閱範例資料庫(yiibai)中的orders
表,如下所示 -
以下宣告使用WEEK
函式返回2013
年每週的訂單數量:
use yiibaidb;SELECT
WEEK(orderDate) week_no,
COUNT(*)
FROM
orders
WHERE
YEAR(orderDate) = 2013
GROUP BY WEEK(orderDate);
Database changed
執行上面查詢語句,得到以下結果 -
+---------+----------+
| week_no | COUNT(*) |
+---------+----------+
| 1 | 3 |
| 4 | 2 |
| 6 | 1 |
| 7 | 1 |
| 8 | 1 |
| 9 | 1 |
| 10 | 1 |
| 11 | 1 |
| 12 | 3 |
| 13 | 2 |
| 14 | 1 |
| 15 | 1 |
| 16 | 1 |
| 17 | 2 |
| 18 | 2 |
| 20 | 3 |
| 21 | 1 |
| 22 | 2 |
| 23 | 1 |
| 24 | 2 |
| 25 | 2 |
| 26 | 3 |
| 27 | 2 |
| 28 | 1 |
| 29 | 1 |
| 30 | 1 |
| 31 | 2 |
| 32 | 1 |
| 34 | 1 |
| 35 | 2 |
| 36 | 2 |
| 37 | 2 |
| 38 | 2 |
| 39 | 3 |
| 40 | 7 |
| 41 | 2 |
| 42 | 5 |
| 43 | 1 |
| 44 | 10 |
| 45 | 9 |
| 46 | 6 |
| 47 | 5 |
| 48 | 8 |
| 49 | 1 |
+---------+----------+
44 rows in set
在本教學中,您已經學會了如何使用MySQL WEEK
函式從指定的日期獲取週數。