在本教學中,您將學習如何使用MySQL WEEK
函數來獲取日期的周數。
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天以上”表示:
- 如果星期包含1月1日,並且在新的一年中有
4
天或更多天,那麼這周是第1
周。 - 否則,這一周的數字是前一年的最後一周,下周是第1周。
WEEK
函數返回一個周數,遵循ISO 8601:1988
MySQL WEEK功能示例
請參閱示例資料庫(zaixian)中的orders
表,如下所示 -
以下聲明使用WEEK
函數返回2013
年每週的訂單數量:
use zaixiandb;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
函數從指定的日期獲取周數。
上一篇:
MySQL函數
下一篇:
MySQL+Node.js連接和操作