SYSDATEは現在のシステム日付を返すSQL関数である。
DBMS | SYSDATE |
---|---|
MySQL | ✓ |
Oracle | ✓ |
PostgreSQL | ✗ |
SQL Server | ✗ |
現在の日付と時刻は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;
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>