在本教學中,您將學習如何使用MySQL MONTH
函式來獲取給定日期的月份。
MONTH
函式返回一個整數,表示指定日期值的月份。 以下說明了MONTH
函式的語法:
MONTH(date);
MONTH
函式接受一個DATE或DATETIME值的引數。 它返回1
到12
之間的整數,範圍從1
到12
。
如果通過零日期,例如0000-00-00
,則MONTH
函式返回0
,如果日期為NULL
,則MONTH
函式返回NULL
。
以下範例顯示如何獲取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
請參閱範例資料庫(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
下面我們將語句分解成更小的部分,使它更容易理解:
orderNumber
列連線了兩個表:orders
和orderdetails
表。MONTH
函式應用於orderDate
列以獲取月份資料2014
年的訂單。在本教學中,您學習了如何使用MySQL MONTH
函式來獲取指定日期的一個月份值。