MySQL week()函式

2019-10-16 22:55:20

在本教學中,您將學習如何使用MySQL WEEK函式來獲取日期的週數。

MySQL WEEK函式介紹

通常,一年的正常年份為365天,閏年為366天。一年又可以分為許多周,每週有7天。 所以一年,我們經常有365/7 = 52周,周範圍是從152

要檢視給定日期屬於哪個週數,您可以使用WEEK函式,如下所示:

WEEK(date, mode);

WEEK函式接受兩個引數:

  • date是要獲取周數的日期。
  • mode是一個可選引數,用於確定週數計算的邏輯。它允許您指定本週是從星期一還是星期日開始,返回的週數應在052之間或053之間。

如果忽略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功能範例

請參閱範例資料庫(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函式從指定的日期獲取週數。