TO_DATE
式を日付に変換します。変換対象には以下が含まれます。
タイムスタンプ形式の文字列を日付に変換: 指定した文字列から日付を抽出します。
整数を日付に変換: その整数を、Unix エポック(1970 年 1 月 1 日 00:00:00)より前の日数(負の数の場合)または後の日数(正の数の場合)として解釈します。Date 値の範囲は
1000-01-01から9999-12-31までであることに注意してください。"SELECT TO_DATE(9999999999999999999)" を実行すると、TiDB Cloud Lake はエラーを返します。指定した形式を使用して文字列を日付に変換: この関数は 2 つの引数を取り、2 番目の文字列で指定した形式に基づいて、1 番目の文字列を日付に変換します。TiDB Cloud Lake で日付と時刻の形式をカスタマイズするには、フォーマット指定子を使用できます。サポートされているフォーマット指定子の一覧については、日付と時刻の書式設定 を参照してください。
関連情報: TO_TIMESTAMP
構文
-- Convert a timestamp-format string
TO_DATE('<timestamp_expr>')
-- Convert an integer
TO_DATE(<integer>)
-- Convert a string using the given format
TO_DATE('<string>', '<format>')
エイリアス
戻り値の型
この関数は、"YYYY-MM-DD" 形式の日付を返します。
SELECT TYPEOF(TO_DATE('2022-01-02')), TYPEOF(STR_TO_DATE('2022-01-02'));
┌───────────────────────────────────────────────────────────────────┐
│ typeof(to_date('2022-01-02')) │ typeof(str_to_date('2022-01-02')) │
├───────────────────────────────┼───────────────────────────────────┤
│ DATE │ DATE │
└───────────────────────────────────────────────────────────────────┘
返された日付を文字列に戻すには、DATE_FORMAT 関数を使用します。
SELECT DATE_FORMAT(TO_DATE('2022-01-02')) AS dt, TYPEOF(dt);
┌─────────────────────────┐
│ dt │ typeof(dt) │
├────────────┼────────────┤
│ 2022-01-02 │ VARCHAR │
└─────────────────────────┘
例
例 1: タイムスタンプ形式の文字列を変換する
SELECT TO_DATE('2022-01-02T01:12:00+07:00'), STR_TO_DATE('2022-01-02T01:12:00+07:00');
┌─────────────────────────────────────────────────────────────────────────────────┐
│ to_date('2022-01-02t01:12:00+07:00') │ str_to_date('2022-01-02t01:12:00+07:00') │
├──────────────────────────────────────┼──────────────────────────────────────────┤
│ 2022-01-01 │ 2022-01-01 │
└─────────────────────────────────────────────────────────────────────────────────┘
SELECT TO_DATE('2022-01-02'), STR_TO_DATE('2022-01-02');
┌───────────────────────────────────────────────────┐
│ to_date('2022-01-02') │ str_to_date('2022-01-02') │
├───────────────────────┼───────────────────────────┤
│ 2022-01-02 │ 2022-01-02 │
└───────────────────────────────────────────────────┘
例 2: 整数を変換する
SELECT TO_DATE(1), STR_TO_DATE(1), TO_DATE(-1), STR_TO_DATE(-1);
┌───────────────────────────────────────────────────────────────────┐
│ to_date(1) │ str_to_date(1) │ to_date((- 1)) │ str_to_date((- 1)) │
│ Date │ Date │ Date │ Date │
├────────────┼────────────────┼────────────────┼────────────────────┤
│ 1970-01-02 │ 1970-01-02 │ 1969-12-31 │ 1969-12-31 │
└───────────────────────────────────────────────────────────────────┘
例 3: 指定した形式を使用して文字列を変換する
SELECT TO_DATE('12/25/2022','%m/%d/%Y'), STR_TO_DATE('12/25/2022','%m/%d/%Y');
┌───────────────────────────────────────────────────────────────────────────┐
│ to_date('12/25/2022', '%m/%d/%y') │ str_to_date('12/25/2022', '%m/%d/%y') │
├───────────────────────────────────┼───────────────────────────────────────┤
│ 2022-12-25 │ 2022-12-25 │
└───────────────────────────────────────────────────────────────────────────┘