Поделиться через


try_parse_timestamp функция

Область применения:check помечена да Databricks Runtime 18.1 и выше

Если expr строка является строкой, анализирует ее TIMESTAMP в соответствии с первым соответствующим шаблоном в указанном списке форматов или возвращается NULL , если шаблон не соответствует. Если expr является числовым типом, он анализируется как метка времени Unix. Недопустимый или несоединяющий expr возвращается NULL вместо возникновения ошибки.

Синтаксис

try_parse_timestamp(expr [, { pattern [...] } ])

Аргументы

  • expr: строковое или числовое значение для синтаксического анализа TIMESTAMP. Допустимые типы:
    • TINYINT, , SMALLINTINTBIGINT
    • FLOAT, DOUBLE
    • DECIMAL (до 18 точности)
    • STRING
  • шаблон: необязательный список шаблонов меток времени или ссылка на предопределенный список, например #iso8601 или #rfc3339. Шаблон метки времени должен быть константной строкой. Если шаблон не указан, он эквивалентен указанию #extended. Справочник по символам шаблона и список предопределенных списков шаблонов см. в разделе "Ссылка на шаблон " в parse_timestamp функции.

Возвраты

A TIMESTAMPили NULL если expr не удается проанализировать.

expr Если строка и ни одна из шаблонов не совпадает, функция возвращаетсяNULL.

expr Если числовое значение и не может быть интерпретировано как допустимая метка времени Unix (например, переполнение), функция возвращаетсяNULL.

Если параметр формата неправильно сформирован (недопустимый шаблон или список неизвестных шаблонов), функция по-прежнему вызывает ошибку; только ошибки синтаксического анализа возвращаемого exprNULLзначения.

Если expr есть NULL, функция возвращается NULL.

Примечания

  • Если список шаблонов NULL содержит значения, они игнорируются. Если указаны все предоставленные шаблоны, результатом является NULLNULL.
  • Если метка времени соответствует шаблону без сведений о часовом поясе, он анализируется в часовом поясе сеанса.

Условия ошибок

Примеры

-- Parse timestamp according to default pattern list
> SELECT try_parse_timestamp('2024-12-09T19:30:01');
 2024-12-09 19:30:01.000

-- Invalid date returns NULL
> SELECT try_parse_timestamp('2016-12-32');
 NULL

-- Bad input returns NULL instead of error
> SELECT try_parse_timestamp('bad input');
 NULL

-- Invalid pattern still raises an error (does not return NULL)
> SELECT try_parse_timestamp('2023', 'QQQQ');
 Error: INVALID_PARAMETER_VALUE.PATTERN

-- Extend the default pattern list with custom patterns
> SELECT try_parse_timestamp(col, "#extended", "dd MMM, yyyy", "MMM d; yy") FROM VALUES ('2024-12-01'), ('02 Dec, 2024'), ('DEC 3; 24') AS t(col)
 2024-12-01 00:00:00.000
 2024-12-02 00:00:00.000
 2024-12-03 00:00:00.000