Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция
Область применения:
Databricks SQL
Databricks Runtime
Возвращает значение expr, приведенное к дате, с применением необязательного форматирования.
Синтаксис
to_date(expr [, fmt] )
Аргументы
-
expr: строковое (STRING) выражение, представляющее дату. - fmt: необязательное выражение типа STRING для форматирования.
Возвраты
Значение DATE.
Если указан аргумент fmt, он должен соответствовать шаблонам даты и времени.
Если fmt не указан, эта функция является синонимом cast(expr AS DATE).
Если fmt неправильно сформирован или его приложение не приводит к правильно сформированной дате, Azure Databricks вызывает ошибку.
Чтобы вернуться NULL вместо ошибки при expr неправильной форме, использовании 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/yyyyилиMM-dd-yyyy, укажите соответствующийfmtаргумент. Ознакомьтесь с шаблонами Datetime для всех поддерживаемых букв шаблонов. -
Входная строка содержит недопустимые значения дат: например, месяц
13, день32или нечисловые символы, в которых ожидаются цифры. - Строка форматирования использует неподдерживаемые буквы шаблонов: см. шаблоны Datetime для поддерживаемых символов и правил форматирования.
Условия ошибок
-
CAST_INVALID_INPUT. Вызывается, если не
fmtуказано, и входная строка не может быть проанализирована как дата. -
CANNOT_PARSE_TIMESTAMP. Вызывается при
fmtуказании, но входная строка не соответствует заданному шаблону формата.
Примечание.
В Databricks Runtime, если , функция возвращается false вместо ошибки для неправильных дат.
Примеры
-- 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