TO_DATEは文字列で表された日付をDATEデータ型に変換するOracle SQL関数である。変換元の文字列は、 'YYYYMMDD' や 'YYYY/MM/DD HH24:MI:SS' のような書式フォーマットを指定することもできる。
DBMS | TO_DATE |
---|---|
MySQL | ✗ |
Oracle | ✓ |
PostgreSQL | ✓ |
SQL Server | ✗ |
文字列を日付(DATE型)に変換する。
TO_DATE(char)
書式を指定した文字列を日付型に変換する。
TO_DATE(char, format)
TO_DATE(char, format, nlsparam)
オラクルは関数名の大文字と小文字を区別しないので、関数名は大文字(TO_DATE)と小文字(to_date)のどちらでもよい。
char のフォーマットを指定する日時書式。
デフォルトの日付フォーマットはNLS_TERRITORY初期化パラメータによって暗黙的に決まる。NLS_FORMATパラメータを使用して明示的に設定することもできる。
TO_DATE('15-07-10 00:00:00', 'YY-MM-DD HH24:MI:SS')
フォーマットには次の文字を指定できる。
書式 | 説明 |
---|---|
YYYY | 4桁で表した西暦年 |
YY | 2桁で表した西暦年 |
MM | 月(01~12) |
DD | 日 |
HH | 12時間制の時(1~12) |
HH24 | 24時間制の時(1~24) |
MI | 分 |
SS | 秒 |
「YYYY/MM/DD」形式の文字列を日付型に変換する。
SQL> SELECT TO_DATE('20180713', 'YYYYMMDD') from DUAL;
TO_DATE(
--------
18-07-13
SQL>
YYYY/MM/DD HH24:MI:SS
SQL> select TO_DATE('2020/10/08 17:49:00', 'YYYY/MM/DD HH24:MI:SS') from DUAL;
TO_DATE(
--------
20-10-08
SQL>
TO_DATEは文字列を日付型に変換する関数であるが、逆に日付型を文字列に変換する場合は TO_CHAR 関数を使う。
PostgreSQL でもTO_DATE関数を使える。日時の書式を指定する方法もOracleと似ているが、若干異なる点もある。
MySQL にTO_DATE関数は無い。MySQLで文字列を日付に変換するには、STR_TO_DATE関数を使う。
SELECT STR_TO_DATE('2019-12-04', '%Y-%m-%d')
SELECT STR_TO_DATE('2019/12/04', '%Y/%m/%d')