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


parse_timestamp функция

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

Если expr это строка, он анализируется TIMESTAMP в соответствии с первым шаблоном сопоставления в указанном списке форматов. Один или несколько форматов могут ссылаться на предопределенный список форматов. Если expr является числовым типом, он анализируется как метка времени Unix.

Синтаксис

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

Аргументы

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

Возвраты

Объект, TIMESTAMP представляющий синтаксический exprанализ.

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

expr Если числовое значение является числовым, он всегда анализируется как метка времени Unix.

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

Чтобы вернуться NULL вместо ошибки при сбое синтаксического анализа, используйте try_parse_timestamp функцию.

Примечания

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

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

Примеры

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

-- Parse a microsecond epoch timestamp using the unix pattern list
> SELECT parse_timestamp('1733772601000000', '#unix');
 2024-12-09 19:30:01.000

-- Bad `expr` that does not match any pattern
> SELECT parse_timestamp('bad input');
  Error: CANNOT_PARSE_TIMESTAMP

-- Use try_parse_timestamp to return NULL instead of error
> SELECT try_parse_timestamp('bad input');
 NULL

-- Extend the default pattern list with custom patterns
> SELECT 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

Справочник по шаблону

parse_timestamp и try_parse_timestamp функция используют набор шаблонов, который отличается от стандартного шаблона даты и времени , используемого to_timestamp. В следующей таблице перечислены все символы шаблона и поддерживается ли каждая из них:

Symbol Значение Примеры Поддержка
U Юникс См. примечание ниже Поддерживается
G эра н.э., нашей эры Не поддерживаются
и год 2020; 20 Поддерживается
Д день года 189 Не поддерживаются
M/L месяц года 7; 07; июл; июль Поддерживается
d день месяца 28 Поддерживается
Q/q квартал года 3; 03; 3 кв.; III квартал Не поддерживаются
E день недели Вт; вторник Поддерживается
F выровненный день недели в месяце 3 Не поддерживаются
a утренние и дневные/вечерние часы премьер-министр Поддерживается
ч час в 12-часовом формате (1–12) 12 Поддерживается
K час в формате AM/PM (0–11) 0 Поддерживается
к час в 24-часовом формате (1–24) 1 Не поддерживаются
H час суток (0–23) 0 Поддерживается
m минута в часе 30 Поддерживается
s секунда минуты 55 Поддерживается
S доли секунды 978 Поддерживается
V идентификатор часового пояса США/Лос-Анджелес; Z; –08:30 Поддерживается
z название часового пояса тихоокеанское стандартное время; PST Поддерживается
O локализованное смещение часового пояса GMT+8; GMT+08:00; UTC-08:00 Поддерживается
X смещение зоны "Z" для нуля Z; -08; -0830; -08:30 Поддерживается (1–3 цифры)
x смещение часового пояса +0000; -08; -0830; -08:30 Поддерживается (1–3 цифры)
Z смещение часового пояса +0000; -0800; -08:00 Поддерживается
# Список шаблонов #common, #iso8601 Поддерживается

Замечание

Шаблон Unix (U): Список #unix шаблонов анализирует метки времени эпохи Unix. Для дат между 1971-08-03 и 3554-06-09 реализация может диффамбигировать и анализировать метки времени Unix в секундах, микросекундах и наносекундах. Даты за пределами этого диапазона могут не выполнять синтаксический анализ или синтаксический анализ. Отрицательные целые числа не поддерживаются. Дробные значения поддерживаются до 9 десятичных разрядов и усечены для соответствия точности типа результата.

Языкового стандарта: Заполнители шаблонов не относятся к языковому стандарту. Имена месяцев и дней поддерживаются только на английском языке.

Списки шаблонов

Вы можете передать предопределенный список шаблонов по имени (например#extended, , #iso8601#unix). Доступны следующие списки шаблонов:

  • common — часто найденные шаблоны, не определенные стандартом
  • iso8601
  • rfc1036, rfc1123, rfc2822, rfc3164, rfc3339, rfc4287, rfc5322, rfc5424, rfc6265, rfc7231, rfc822, rfc850, rfc9110, rfc957
  • Unix — метки времени эпохи Unix
  • extended — объединение всех перечисленных выше списков; также значение по умолчанию, если шаблон не указан
  • extended-dmy — расширенные форматы языкового стандарта DMY
  • extended-mdy — расширенные форматы языкового стандарта MDY