to_date 函数

适用于:勾选“是” Databricks SQL 勾选“是” Databricks Runtime

返回使用可选格式设置将 expr 转换为日期后的值。

语法

to_date(expr [, fmt] )

参数

  • expr:表示日期的 STRING 表达式。
  • fmt:一个可选格式 STRING 表达式。

返回

一个日期。

如果提供了 fmt,则它必须符合日期/时间模式

如果未提供 fmt,则此函数是 cast(expr AS DATE) 的同义函数。

如果fmt格式不正确或应用程序不会导致格式正确的日期,则Azure Databricks引发错误。

若要在 Databricks Runtime 中将spark.sql.ansi.enabled 设置为

常见错误原因和解决方法

to_date 在以下情况下引发错误:

  • 输入字符串与预期的格式不匹配fmt 如果未指定,则输入必须采用 yyyy-MM-ddyyyy-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