MySQL month()函式

2019-10-16 22:55:12

在本教學中,您將學習如何使用MySQL MONTH函式來獲取給定日期的月份。

MySQL MONTH函式介紹

MONTH函式返回一個整數,表示指定日期值的月份。 以下說明了MONTH函式的語法:

MONTH(date);

MONTH函式接受一個DATEDATETIME值的引數。 它返回112之間的整數,範圍從112

如果通過零日期,例如0000-00-00,則MONTH函式返回0,如果日期為NULL,則MONTH函式返回NULL

MySQL MONTH函式範例

以下範例顯示如何獲取2018-01-01的月份:

mysql> SELECT MONTH('2018-01-01');
+---------------------+
| MONTH('2018-01-01') |
+---------------------+
|                   1 |
+---------------------+
1 row in set

要獲取當前月份,請使用以下語句:

mysql> SELECT MONTH(NOW()) CURRENT_MONTH;
+---------------+
| CURRENT_MONTH |
+---------------+
|             8 |
+---------------+
1 row in set

在這個例子中,我們將NOW函式的結果(當前日期和時間)傳遞給MONTH函式以獲取當前月份,寫這篇文章的時候,日期是2017-08-12

如前所述,MONTH函式為零日期返回0,如下例所示:

mysql> SELECT MONTH('0000-00-00');
+---------------------+
| MONTH('0000-00-00') |
+---------------------+
| NULL                |
+---------------------+
1 row in set

如果輸入日期值為NULL,則MONTH函式返回NULL

mysql> SELECT MONTH(NULL);
+-------------+
| MONTH(NULL) |
+-------------+
| NULL        |
+-------------+
1 row in set

MySQL MONTH功能的實用性

請參閱範例資料庫(yiibaidb)中的以下orders表和orderdetails表:

以下宣告在2014年每月獲得訂單總額:

SELECT 
    MONTH(orderDate) month,
    ROUND(SUM(quantityOrdered * priceEach)) subtotal
FROM
    orders
        INNER JOIN
    orderdetails USING (orderNumber)
WHERE
    YEAR(orderDate) = 2014
GROUP BY month;

執行上面查詢語句,得到以下結果 -

+-------+----------+
| month | subtotal |
+-------+----------+
|     1 | 292385   |
|     2 | 289503   |
|     3 | 217691   |
|     4 | 187576   |
|     5 | 248325   |
|     6 | 343371   |
|     7 | 325563   |
|     8 | 419327   |
|     9 | 283800   |
|    10 | 500234   |
|    11 | 979292   |
|    12 | 428838   |
+-------+----------+
12 rows in set

下面我們將語句分解成更小的部分,使它更容易理解:

  1. INNER JOIN子句使用orderNumber列連線了兩個表:ordersorderdetails表。
  2. MONTH函式應用於orderDate列以獲取月份資料
  3. SUM函式計算銷售訂單中每個訂單項的小計。
  4. WHERE子句僅過濾了2014年的訂單。
  5. GROUP BY子句按月分組。

在本教學中,您學習了如何使用MySQL MONTH函式來獲取指定日期的一個月份值。