LAST_DAYとは、引数で指定された月の月末日付をDATE型で返すSQL関数である。ただし、時刻に関しては、引数に渡された時刻をそのまま返すので、23時59分59秒を返すわけではない。
DBMS | LAST_DAY |
---|---|
MySQL | ✓ |
Oracle | ✓ |
PostgreSQL | ✗ |
SQL Server | ✗ |
LAST_DAY(date)
基準となる日時を指定する。
現在の日付と時刻は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でもLAST_DAY関数を利用できる。
PostgreSQLにはLAST_DAY関数がない。
PostgreSQLでは月末の日付を次のSQLで求める。
SELECT (date_trunc('MONTH', now()) + INTERVAL '1 MONTH - 1 day')::date
SQLServerにはLAST_DAY関数がない。
LAST_DAY関数の代わりにEOMONTH関数を使う。
SELECT EOMONTH('2020-08-30') AS lastday