SQL SYSDATE 関数

SYSDATEは現在のシステム日付を返すSQL関数である。

SYSDATE
DBMS SYSDATE
MySQL
Oracle
PostgreSQL
SQL Server

SYSDATEの構文

現在の日付と時刻はSYSDATE関数で取得できる。SELECT文のFROM句にとくに指定する表がないときは、DUAL表を使用する。

SQL> SELECT SYSDATE FROM DUAL;

SYSDATE
--------
09-10-09

SQL>

一時的にデータベースのシステム日時を変更する

一時的にデータベースのシステム日時を変更したい場合は、初期化パラメータのfixed_dateに日時を設定する。

fixed_dateが設定されていると、SYSDATEはfixed_dataに設定された値を返す。ただし、SYSDATE以外(SYSTIMESTAMPなど)には反映されない。

SQL> ALTER SYSTEM SET FIXED_DATE = '2009-12-31-23:59:59' SCOPE = MEMORY;

元に戻す場合はfixed_dateにNONEを設定する。

SQL> ALTER SYSTEM SET FIXED_DATE = NONE SCOPE = MEMORY;

SYSDATEの使用例

TRUNC関数と組み合わせることによって、今月1日の日付を取得できる。

SQL> SELECT SYSDATE AS 今日 FROM DUAL;

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

SQL> SELECT TRUNC(SYSDATE, 'MM') AS 今月1日 FROM DUAL;

今月1日
--------
16-08-01

SQL>

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関数と組み合わせることによって、1か月後の日付や1か月前の日付を取得できる。

SQL> SELECT SYSDATE AS 今日 FROM DUAL;

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

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

来月
--------
16-08-23

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

先月
--------
16-07-23

SQL>

関連するSQL関数