0


SQL获取月份中的最后一天

上一篇文章中我们介绍了如何利用 SQL 获取月份中的第一天,本文就来聊一聊怎么获取月份中的最后一天,涉及的数据库包括 Oracle、MySQL、Microsoft SQL Server、PostgreSQL 以及 SQLite。

Oracle

Oracle 数据库提供了 LAST_DAY() 函数,可以获取指定日期所在月份的最后一天:

SELECT SYSDATE,
       LAST_DAY(SYSDATE)"Last",
       LAST_DAY(SYSDATE)- SYSDATE "Days Left"FROM DUAL;

SYSDATE   Last       Days Left--------- --------- ----------20-MAY-2331-MAY-2311

一个月份中的最后一天由会话参数 NLS_CALENDAR 决定。

MySQL

MySQL 提供了 LAST_DAY() 函数,可以返回指定月份的最后一天:

SELECT LAST_DAY(current_date());
LAST_DAY(current_date())|------------------------+2023-05-31|

MariaDB 也提供了相同的 LAST_DAY() 函数。

Microsoft SQL Server

Microsoft SQL Server 提供了 EOMONTH() 函数,返回包含指定日期所在月份的最后一天:

SELECT EOMONTH('2023-01-01');2023-01-31

EOMONTH() 函数包含一个可选的参数,可以增加或减少一个指定的月份数量:

SELECT EOMONTH('2023-01-01',4);2023-05-31

PostgreSQL

PostgreSQL 没有提供可以直接使用的函数获取月份中的最后一天,需要通过额外的操作达到相同的效果:

SELECT(date_trunc('month',date'2023-05-20')+interval'1 month - 1 day')::date;date|----------+2023-05-31|

其中,DATE_TRUNC() 函数用于截断日期。示例中的作用是将日期截断到月份的第一天。然后,我们通过增加一个时间间隔获取月份的最后一天。

SQLite

SQLite 提供了 DATE() 函数,可以用于获取月份中的最后一天:

SELECTDATE('2023-05-20','start of month','+1 month','-1 day');2023-05-31

示例中函数的处理过程和 PostgreSQL 类似,‘start of month’ 参数表示获取月份的第一天,然后 ‘+1 month’ 获取了下一个月份,最后 ‘-1 day’ 减去一天返回了原日期所在月份的最后一天。

标签: sql 数据库 oracle

本文转载自: https://blog.csdn.net/horses/article/details/130760103
版权归原作者 不剪发的Tony老师 所有, 如有侵权,请联系我们删除。

“SQL获取月份中的最后一天”的评论:

还没有评论