MySQL LAST_DAY函数

时间:2019-11-20 08:52:23  来源:igfitidea点击:

简介:本教程向您介绍MySQL LAST_DAY()函数,并向您展示如何在各种上下文中应用LAST_DAY()函数。

MySQL LAST_DAY()函数简介

LAST_DAY()函数采用DATE或DATETIME值,并返回输入日期的月份的最后一天。

LAST_DAY(date);

date参数必须是有效的DATE或DATETIME值。

如果日期为零(0000-00-00),无效或NULL,则LAST_DAY()函数将返回NULL。

MySQL LAST_DAY()函数示例

让我们举一些使用LAST_DAY()函数的示例。

A)MySQL LAST_DAY()简单示例

下面的示例使用LAST_DAY()函数返回2016年2月3日的最后一天。

SELECT LAST_DAY('2016-02-03');

这是输出:

+------------------------+
| LAST_DAY('2016-02-03') |
+------------------------+
| 2016-02-29             |
+------------------------+
1 row in set (0.00 sec)

B)使用MySQL LAST_DAY()函数获取当前月份的最后一天

要获取当前月份的最后一天,可以将LAST_DAY()函数与NOW()或CURDATE()函数结合使用,如下所示:

SELECT LAST_DAY(NOW());

输出为:

+-----------------+
| LAST_DAY(NOW()) |
+-----------------+
| 2017-07-31      |
+-----------------+
1 row in set (0.00 sec)
SELECT LAST_DAY(CURDATE());
+---------------------+
| LAST_DAY(CURDATE()) |
+---------------------+
| 2017-07-31          |
+---------------------+
1 row in set (0.00 sec)

C)使用MySQL LAST_DAY()函数获取下个月的最后一天

要获取下个月的最后一天,请向当前日期添加1个月,然后将结果传递给LAST_DAY()函数,如以下查询所示:

SELECT LAST_DAY(CURDATE() + INTERVAL 1 MONTH);

这是输出:

+----------------------------------------+
| LAST_DAY(CURDATE() + INTERVAL 1 MONTH) |
+----------------------------------------+
| 2017-08-31                             |
+----------------------------------------+
1 row in set (0.00 sec)

D)获取日期中的第一天

MySQL没有返回日期第一天的函数。
但是,可以通过以下步骤使用LAST_DAY()函数进行计算:

  • 首先,获取日期中月份的最后一天。

  • 其次,使用DATE_ADD()函数添加1天以获取下个月的第一天

  • 第三,减去1个月即可得出日期中该月的第一天。

以下查询说明如何获取2017年7月14日的第一天。

SELECT 
    DATE_ADD(DATE_ADD(LAST_DAY('2017-07-14'),
            INTERVAL 1 DAY),
        INTERVAL - 1 MONTH) AS first_day;

输出为:

+------------+
| first_day  |
+------------+
| 2017-07-01 |
+------------+
1 row in set (0.00 sec)

为了更加方便,您可以开发一个名为FIRST_DAY()的存储函数,如下所示:

DELIMITER $$

CREATE FUNCTION first_day(dt DATETIME) RETURNS date
BEGIN
    RETURN DATE_ADD(DATE_ADD(LAST_DAY(dt),
                INTERVAL 1 DAY),
            INTERVAL - 1 MONTH);
END

然后,您可以调用FIRST_DAY()函数,如以下查询所示:

SELECT FIRST_DAY('2017-02-15');

这是输出:

+-------------------------+
| FIRST_DAY('2017-02-15') |
+-------------------------+
| 2017-02-01              |
+-------------------------+
1 row in set (0.00 sec)

在本教程中,您学习了如何使用MySQL LAST_DAY()函数获取指定日期的每月的最后一天。