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 |
+---------------------+
示例
假设我们使用CREATE语句在SQL数据库中创建了一个名为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;
成功在SQL数据库中创建了表CALENDAR。
+------------+
| 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 |
+----+---------------+---------+-------------+-------------+