LAST_DAY

LAST_DAYとは、引数で指定された月の月末日付をDATE型で返すSQL関数である。ただし、時刻に関しては、引数に渡された時刻をそのまま返すので、23時59分59秒を返すわけではない。

LAST_DAY
DBMS LAST_DAY
MySQL
Oracle
PostgreSQL
SQL Server

LAST_DAYの構文

LAST_DAY(date)
date

基準となる日時を指定する。

LAST_DAYの使用例

現在の日付と時刻はSYSDATEで取得できる。LAST_DAY関数と組み合わせることによって、今月末の日付を取得できる。

SQL> SELECT SYSDATE AS 今日 FROM DUAL;

今日
--------
16-08-23

SQL> SELECT LAST_DAY(SYSDATE) AS 今月末 FROM DUAL;

今月末
--------
16-08-31

SQL>

来月末の日付や先月末の日付を取得するには、ADD_MONTHS関数と組み合わせる。

SQL> SELECT SYSDATE AS 今日 FROM DUAL;

今日
--------
16-08-23

SQL> SELECT LAST_DAY(ADD_MONTHS(SYSDATE, 1)) AS 来月末 FROM DUAL;

来月末
--------
16-09-30

SQL> SELECT LAST_DAY(ADD_MONTHS(SYSDATE, -1)) AS 先月末 FROM DUAL;

先月末
--------
16-07-31

SQL>

MySQL

MySQLでもLAST_DAY関数を利用できる。

PostgreSQL

PostgreSQLにはLAST_DAY関数がない。

PostgreSQLでは月末の日付を次のSQLで求める。

SELECT (date_trunc('MONTH', now()) + INTERVAL '1 MONTH - 1 day')::date

SQLServer

SQLServerにはLAST_DAY関数がない。

LAST_DAY関数の代わりにEOMONTH関数を使う。

SELECT EOMONTH('2020-08-30') AS lastday