上一篇文章中我们介绍了如何利用 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’ 减去一天返回了原日期所在月份的最后一天。
版权归原作者 不剪发的Tony老师 所有, 如有侵权,请联系我们删除。