MySQL LAST_DAY Function

MySQL LAST_DAY Function Example

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

MySQL LAST_DAY()函数简介

LAST_DAY()函数采用DATEDATETIME值并返回输入日期所在月份的最后一天。

LAST_DAY(date);
Code language: SQL (Structured Query Language) (sql)

日期参数必须是有效的DATEDATETIME值。

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

MySQL LAST_DAY()函数示例

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

A) MySQL LAST_DAY()简单示例

以下示例使用LAST_DAY()函数返回February 03, 2016的最后一天。

SELECT LAST_DAY('2016-02-03');Code language: SQL (Structured Query Language) (sql)

这是输出:

+------------------------+
| LAST_DAY('2016-02-03') |
+------------------------+
| 2016-02-29             |
+------------------------+
1 row in set (0.00 sec)
Code language: SQL (Structured Query Language) (sql)

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

要获取当月的最后一天,请将LAST_DAY()函数与NOW()CURDATE()函数组合起来,如下所示:

SELECT LAST_DAY(NOW());Code language: SQL (Structured Query Language) (sql)

输出是:

+-----------------+
| LAST_DAY(NOW()) |
+-----------------+
| 2017-07-31      |
+-----------------+
1 row in set (0.00 sec)Code language: JavaScript (javascript)
SELECT LAST_DAY(CURDATE());Code language: SQL (Structured Query Language) (sql)
+---------------------+
| LAST_DAY(CURDATE()) |
+---------------------+
| 2017-07-31          |
+---------------------+
1 row in set (0.00 sec)Code language: JavaScript (javascript)

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

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

SELECT LAST_DAY(CURDATE() + INTERVAL 1 MONTH);Code language: SQL (Structured Query Language) (sql)

这是输出:

+----------------------------------------+
| LAST_DAY(CURDATE() + INTERVAL 1 MONTH) |
+----------------------------------------+
| 2017-08-31                             |
+----------------------------------------+
1 row in set (0.00 sec)Code language: JavaScript (javascript)

D) 获取日期所在月份的第一天

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

  • 首先,获取日期所在月份的最后一天。
  • 其次,使用DATE_ADD()函数添加 1 天以获得下个月的第一天
  • 第三,减去 1 个月即可得到该日期所在月份的第一天。

以下查询说明如何获取2017-07-14月份的第一天。

SELECT 
    DATE_ADD(DATE_ADD(LAST_DAY('2017-07-14'),
            INTERVAL 1 DAY),
        INTERVAL - 1 MONTH) AS first_day;Code language: SQL (Structured Query Language) (sql)

输出是:

+------------+
| first_day  |
+------------+
| 2017-07-01 |
+------------+
1 row in set (0.00 sec)Code language: JavaScript (javascript)

为了更方便,您可以开发一个名为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
Code language: SQL (Structured Query Language) (sql)

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

SELECT FIRST_DAY('2017-02-15');Code language: SQL (Structured Query Language) (sql)

这是输出:

+-------------------------+
| FIRST_DAY('2017-02-15') |
+-------------------------+
| 2017-02-01              |
+-------------------------+
1 row in set (0.00 sec)
Code language: SQL (Structured Query Language) (sql)

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

本教程有帮助吗?