適用対象:
Databricks SQL
Databricks Runtime
任意の書式設定を使用した日付への expr キャストを返します。
構文
to_date(expr [, fmt] )
引数
-
expr: 日付を表す文字列式。 - fmt: 書式設定の STRING 式 (省略可能)。
戻り値
DATE 値。
fmt を指定する場合は、Datetime パターンに準拠している必要があります。
fmt が指定されない場合、この関数は cast(expr AS DATE) の同義語です。
fmt の形式が正しくない場合、またはそのアプリケーションが適切な形式の日付にならない場合は、Azure Databricksエラーが発生します。
expr形式が正しくない場合にエラーの代わりにNULLを返すには、try_cast(expr AS DATE)を使用するか、Databricks Runtime で spark.sql.ansi.enabled を false に設定します。
一般的なエラーの原因と解決策
to_date では、次の場合にエラーが発生します。
-
入力文字列が想定される形式と一致しません。
fmtが指定されていない場合、入力はyyyy-MM-dd形式またはyyyy-MM-dd HH:mm:ss形式である必要があります。 データでdd/MM/yyyyやMM-dd-yyyyなど、別の形式を使用する場合は、一致するfmt引数を指定します。 サポートされているすべてのパターン文字については 、Datetime パターン を参照してください。 -
入力文字列に無効な日付値が含まれています。たとえば、月
13、日32、数字が必要な数値以外の文字などです。 - 書式指定文字列では、サポートされていないパターン文字が使用されます。サポートされているシンボルと書式設定ルールについては 、「Datetime パターン 」を参照してください。
エラー条件
-
CAST_INVALID_INPUT:
fmtが指定されておらず、入力文字列を日付として解析できない場合に発生します。 -
CANNOT_PARSE_TIMESTAMP:
fmtが指定されているが、入力文字列が指定された書式パターンと一致しない場合に発生します。
注意
Databricks Runtime で spark.sql.ansi.enabled が false の場合、この関数は、日付の形式に誤りがある場合のエラーではなく、NULL を返します。
例
-- Parsing with default format (yyyy-MM-dd)
> SELECT to_date('2009-07-30 04:17:52');
2009-07-30
-- Parsing with an explicit format
> SELECT to_date('2016-12-31', 'yyyy-MM-dd');
2016-12-31
-- Parsing a non-default date format
> SELECT to_date('31/12/2016', 'dd/MM/yyyy');
2016-12-31
-- Error: input is not a valid date string
> SELECT to_date('not-a-date');
Error: CAST_INVALID_INPUT
-- Error: input format doesn't match the default yyyy-MM-dd format
> SELECT to_date('31/12/2016');
Error: CAST_INVALID_INPUT
-- Fix: supply a fmt that matches the input format
> SELECT to_date('31/12/2016', 'dd/MM/yyyy');
2016-12-31
-- Use try_cast to return NULL instead of an error for invalid input
> SELECT try_cast('not-a-date' AS DATE);
NULL