在本教學中,您將學習如何使用MySQL MONTH
函數來獲取給定日期的月份。
MySQL MONTH函數介紹
MONTH
函數返回一個整數,表示指定日期值的月份。 以下說明了MONTH
函數的語法:
MONTH(date);
MONTH
函數接受一個DATE或DATETIME值的參數。 它返回1
到12
之間的整數,範圍從1
到12
。
如果通過零日期,例如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功能的實用性
請參閱示例資料庫(zaixiandb)中的以下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
下麵我們將語句分解成更小的部分,使它更容易理解:
- INNER JOIN子句使用
orderNumber
列連接了兩個表:orders
和orderdetails
表。 MONTH
函數應用於orderDate
列以獲取月份數據- SUM函數計算銷售訂單中每個訂單項的小計。
- WHERE子句僅過濾了
2014
年的訂單。 - GROUP BY子句按月分組。
在本教學中,您學習了如何使用MySQL MONTH
函數來獲取指定日期的一個月份值。
上一篇:
MySQL函數
下一篇:
MySQL+Node.js連接和操作