转载自 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功能的实用性
请参阅示例数据库(yiibaidb)中的以下orders
表和orderdetails
表:
以下声明在2014
年每月获得订单总额:
SELECT MONTH(orderDate) month,ROUND(SUM(quantityOrdered * priceEach)) subtotal
FROMordersINNER JOINorderdetails USING (orderNumber)
WHEREYEAR(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
函数来获取指定日期的一个月份值。