SQL - EOMONTH() 函数



SQL 的EOMONTH()函数用于返回指定日期值的月份的最后一天,并带有一个可选的偏移量。

语法

以下是 SQL EOMONTH() 函数的语法:

EOMONTH(start_date, [offset])

参数

此函数接受两个参数。具体描述如下:

  • start_date − 指定要查找其月份最后一天的日期或日期时间值。

  • offset − 指定在开始日期之前或之后的天数。这是一个可选参数。如果省略偏移量,则函数返回月份的最后一天。

示例

以下示例演示了 SQL EOMONTH() 函数的用法:

SQL> SELECT EOMONTH('2023-02-17') AS END_OF_MONTH;

输出

执行上述查询后,将获得如下输出:

+--------------+
| END_OF_MONTH |
+--------------+
| 2023-02-28   |
+--------------+

示例

我们可以使用 GETDATE() 函数作为 EOMONTH() 函数的参数,它将检索当前月份的最后一天。

SQL> SELECT EOMONTH(GETDATE()) AS END_OF_MONTH;

输出

如果我们执行上述查询,则结果如下:

+--------------+
| END_OF_MONTH |
+--------------+
| 2023-02-28   |
+--------------+

示例

我们可以使用以下查询将当前月份的最后一天增加 6 个月:

SQL> SELECT EOMONTH(GETDATE(), 6) AS END_OF_MONTH;

输出

执行上述查询后,输出将显示如下:

+--------------+
| END_OF_MONTH |
+--------------+
| 2023-08-31   |
+--------------+

示例

我们可以使用以下查询将当前月份的最后一天减少 2 个月:

SQL> SELECT EOMONTH(GETDATE(), -2) AS END_OF_MONTH;

输出

执行上述查询后,将获得如下输出:

+--------------+
| END_OF_MONTH |
+--------------+
| 2023-12-31   |
+--------------+

示例

在以下示例中,我们尝试使用以下查询检索当前月份的天数:

SQL> SELECT DAY(EOMONTH(CURRENT_TIMESTAMP)) AS NO_OF_DAYS_IN_MONTH;

输出

如果我们执行上述查询,则结果如下:

+---------------------+
| NO_OF_DAYS_IN_MONTH |
+---------------------+
| 28                  |
+---------------------+

示例

在这里,我们尝试使用以下查询从指定的日期值检索天数:

SQL> SELECT DAY(EOMONTH('2023-04-13')) AS NO_OF_DAYS_IN_MONTH;

输出

执行上述查询后,将获得如下输出:

+---------------------+
| NO_OF_DAYS_IN_MONTH |
+---------------------+
| 30                  |
+---------------------+

示例

假设我们在 SQL 数据库中使用 CREATE 语句创建了一个名为 CALENDAR 的表,如下面的查询所示:

SQL> CREATE TABLE CALENDAR(MONTHS DATE NOT NULL);

现在,让我们使用 INSERT 语句在 CALENDER 表中插入一些记录,如下面的查询所示:

SQL> INSERT INTO CALENDAR (MONTHS) VALUES('2023-01-01');
INSERT INTO CALENDAR (MONTHS) VALUES('2023-02-01');
INSERT INTO CALENDAR (MONTHS) VALUES('2023-03-01');
INSERT INTO CALENDAR (MONTHS) VALUES('2023-04-01');
INSERT INTO CALENDAR (MONTHS) VALUES('2023-05-01');
INSERT INTO CALENDAR (MONTHS) VALUES('2023-06-01');
INSERT INTO CALENDAR (MONTHS) VALUES('2023-07-01');
INSERT INTO CALENDAR (MONTHS) VALUES('2023-08-01');
INSERT INTO CALENDAR (MONTHS) VALUES('2023-09-01');
INSERT INTO CALENDAR (MONTHS) VALUES('2023-10-01');
INSERT INTO CALENDAR (MONTHS) VALUES('2023-11-01');
INSERT INTO CALENDAR (MONTHS) VALUES('2023-12-01');

我们可以使用以下查询验证表是否已创建:

SQL> SELECT * FROM CALENDAR;

CALENDAR 表已成功在 SQL 数据库中创建。

+------------+
| MONTHS     |
+------------+
| 2023-01-01 |
| 2023-02-01 |
| 2023-03-01 |
| 2023-04-01 |
| 2023-05-01 |
| 2023-06-01 |
| 2023-07-01 |
| 2023-08-01 |
| 2023-09-01 |
| 2023-10-01 |
| 2023-11-01 |
| 2023-12-01 |
+------------+

我们可以使用以下查询显示每个日历月份的总天数:

SQL> SELECT MONTHS, DAY(EOMONTH(MONTHS)) AS NO_OF_DAYS_IN_MONTH FROM CALENDAR;

输出

执行上述查询后,将获得如下输出:

+------------+---------------------+
| MONTHS     | NO_OF_DAYS_IN_MONTH |
+------------+---------------------+
| 2023-01-01 | 31                  |
| 2023-02-01 | 28                  |
| 2023-03-01 | 31                  |
| 2023-04-01 | 30                  |
| 2023-05-01 | 30                  |
| 2023-06-01 | 31                  |
| 2023-07-01 | 30                  |
| 2023-08-01 | 31                  |
| 2023-09-01 | 30                  |
| 2023-10-01 | 31                  |
| 2023-11-01 | 30                  |
| 2023-12-01 | 31                  |
+------------+---------------------+

示例

让我们使用 CREATE 语句在 SQL 数据库中创建另一个名为VEHICLE_RENTALS的表,如下面的查询所示:

SQL> CREATE TABLE VEHICLE_RENTALS(ID INT NOT NULL, CUSTOMER_NAME VARCHAR (200) NOT NULL, VEHICLE VARCHAR (200), RENTED_DATE DATE NOT NULL)

现在,让我们使用 INSERT 语句在 VEHICLE_RENTALS 表中插入一些记录,如下面的查询所示:

SQL> INSERT INTO VEHICLE_RENTALS(ID, CUSTOMER_NAME, VEHICLE, RENTED_DATE) VALUES(1, 'Dhruv', 'Activa', '2023-12-05');
INSERT INTO VEHICLE_RENTALS(ID, CUSTOMER_NAME, VEHICLE, RENTED_DATE) VALUES(2, 'Arjun','Access', '2023-03-01');
INSERT INTO VEHICLE_RENTALS(ID, CUSTOMER_NAME, VEHICLE, RENTED_DATE) VALUES(3, 'Dev','Jupiter', '2023-03-15');
INSERT INTO VEHICLE_RENTALS(ID, CUSTOMER_NAME, VEHICLE, RENTED_DATE) VALUES(4, 'Riya','Pept', '2023-12-05');
INSERT INTO VEHICLE_RENTALS(ID, CUSTOMER_NAME, VEHICLE, RENTED_DATE) VALUES(5, 'Aarohi','Vespa', '2023-05-02');
INSERT INTO VEHICLE_RENTALS(ID, CUSTOMER_NAME, VEHICLE, RENTED_DATE) VALUES(6, 'Lisa','Aviator', '2023-11-25');
INSERT INTO VEHICLE_RENTALS(ID, CUSTOMER_NAME, VEHICLE, RENTED_DATE) VALUES(7, 'Roy','Aprilia', '2023-05-30');

我们可以使用以下查询验证表是否已创建:

SQL> SELECT * FROM VEHICLE_RENTALS;

VEHICLE_RENTALS 表已成功在 SQL 数据库中创建。

+----+---------------+---------+-------------+
| ID | CUSTOMER_NAME | VEHICLE | RENTED_DATE |
+----+---------------+---------+-------------+
| 1  | Dhruv         | Activa  | 2023-12-05  |
| 2  | Arjun         | Access  | 2023-03-01  |
| 3  | Dev           | Jupiter | 2023-03-15  |
| 4  | Riya          | Pept    | 2023-12-05  |
| 5  | Aarohi        | Vespa   | 2023-05-02  |
| 6  | Lisa          | Aviator | 2023-11-25  |
| 7  | Roy           | Aprilia | 2023-05-30  |
+----+---------------+---------+-------------+

我们可以使用以下查询显示租用车辆的归还日期(月末):

SQL> SELECT CUSTOMER_NAME, VEHICLE, RENTED_DATE, EOMONTH(RENTED_DATE) AS RETURN_DATE FROM VEHICLE_RENTALS;

输出

如果我们执行上述查询,则结果如下:

+----+---------------+---------+-------------+-------------+
| ID | CUSTOMER_NAME | VEHICLE | RENTED_DATE | RETURN_DATE |
+----+---------------+---------+-------------+-------------+
| 1  | Dhruv         | Activa  | 2023-12-05  | 2023-12-31  |
| 2  | Arjun         | Access  | 2023-03-01  | 2023-03-31  |
| 3  | Dev           | Jupiter | 2023-03-15  | 2023-03-31  |
| 4  | Riya          | Pept    | 2023-12-05  | 2023-12-31  |
| 5  | Aarohi        | Vespa   | 2023-05-02  | 2023-05-31  |
| 6  | Lisa          | Aviator | 2023-11-25  | 2023-11-30  |
| 7  | Roy           | Aprilia | 2023-05-30  | 2023-05-31  |
+----+---------------+---------+-------------+-------------+
sql-date-functions.htm
广告