to_date 関数

適用対象:「はい」のチェック マーク 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.enabledfalse に設定します。

一般的なエラーの原因と解決策

to_date では、次の場合にエラーが発生します。

  • 入力文字列が想定される形式と一致しませんfmt が指定されていない場合、入力は yyyy-MM-dd 形式または yyyy-MM-dd HH:mm:ss 形式である必要があります。 データで dd/MM/yyyyMM-dd-yyyyなど、別の形式を使用する場合は、一致する fmt 引数を指定します。 サポートされているすべてのパターン文字については 、Datetime パターン を参照してください。
  • 入力文字列に無効な日付値が含まれています。たとえば、月 13、日 32、数字が必要な数値以外の文字などです。
  • 書式指定文字列では、サポートされていないパターン文字が使用されます。サポートされているシンボルと書式設定ルールについては 、「Datetime パターン 」を参照してください。

エラー条件

  • CAST_INVALID_INPUT: fmt が指定されておらず、入力文字列を日付として解析できない場合に発生します。
  • CANNOT_PARSE_TIMESTAMP: fmt が指定されているが、入力文字列が指定された書式パターンと一致しない場合に発生します。

注意

Databricks Runtime で spark.sql.ansi.enabledfalse の場合、この関数は、日付の形式に誤りがある場合のエラーではなく、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