SQL TO_DATE 関数

TO_DATEは文字列で表された日付をDATEデータ型に変換するOracle SQL関数である。変換元の文字列は、 'YYYYMMDD' や 'YYYY/MM/DD HH24:MI:SS' のような書式フォーマットを指定することもできる。

TO_DATE
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_TERITORY初期化パラメータによって決まる。
format

charフォーマットを指定する日時書式。

nlsparam
日付に変換されるテキスト文字列の言語。

フォーマット

デフォルトの日付フォーマットは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_CHAR

TO_DATEは文字列を日付型に変換する関数であるが、逆に日付型を文字列に変換する場合は TO_CHAR 関数を使う。

PostgreSQL

PostgreSQL でもTO_DATE関数を使える。日時の書式を指定する方法もOracleと似ているが、若干異なる点もある。

MySQL

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')