次の方法で共有


parse_timestamp 関数

適用対象:はい Databricks Runtime 18.1 以降とマークされているチェック

exprが文字列の場合は、指定された形式のリスト内の最初の一致パターンに従って、それをTIMESTAMPに解析します。 1 つ以上の形式で、定義済みの形式の一覧を参照できます。 exprが数値型の場合は、Unix タイムスタンプとして解析します。

構文

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

引数

  • expr: TIMESTAMPに解析する文字列または数値。 受け入れられる型は次のとおりです。
    • TINYINTSMALLINTINTBIGINT
    • FLOATDOUBLE
    • DECIMAL (最大 18 精度)
    • STRING
  • pattern: タイムスタンプ パターンの省略可能なリスト、または #iso8601#rfc3339などの定義済みリストへの参照。 タイムスタンプ パターンは 定数文字列である必要があります。 パターンが指定されていない場合は、 #extendedを指定することと同じです。

返品

解析されたexprを表すTIMESTAMP

exprが文字列の場合は、最初の一致パターンに従って解析されます。 いずれのパターンも一致しない場合、関数はエラーを発生させます。

exprが数値の場合、常に Unix タイムスタンプとして解析されます。

exprNULL場合、関数はNULLを返します。

解析が失敗したときにエラーの代わりに NULL を返すには、 try_parse_timestamp 関数を使用します。

メモ

  • パターン リストに NULL 値が含まれている場合、それらは無視されます。 指定されたすべてのパターンが NULL場合、結果は NULL
  • タイムスタンプがタイムゾーン情報を含まないパターンと一致する場合は、セッションタイムゾーンで解析されます。

エラー条件

例示

-- 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で使用される標準の datetime パターンといくつかの点で異なるパターン セットが使用されます。 次の表に、すべてのパターン シンボルと、それぞれがサポートされているかどうかを示します。

Symbol 説明 例示 サポート
U unix 以下の注を参照してください サポートされている
G 紀元 AD、Anno Domini サポートしていません
y 2020、20 サポートされている
D 通算日 189 サポートしていません
M/L 7、07、Jul、July サポートされている
d 日にち 28 サポートされている
Q/q 四半期 3、03、Q3、第 3 四半期 サポートしていません
E 曜日 Tue、Tuesday サポートされている
F 月の通算曜日 3 サポートしていません
a 日の午前 - 午後 午後 サポートされている
h 午前 - 午後のクロック時間 (1 から 12) 12 サポートされている
K 午前 - 午後の時間 (0 から 11) 0 サポートされている
k 日のクロック時間 (1 から 24) 1 サポートしていません
H 日の時間 (0 から 23) 0 サポートされている
m 時間の分 30 サポートされている
s 分の秒 55 サポートされている
S 秒の小数部分 978 サポートされている
V タイム ゾーン ID America/Los_Angeles、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 サポートされている
# pattern list #common、#iso8601 サポートされている

Unix パターン (U):#unix パターン リストは、Unix エポック タイムスタンプを解析します。 1971-08-03 から 3554-06-09 の間の日付の場合、この実装では、Unix タイムスタンプのあいまいさを解消し、秒、マイクロ秒、およびナノ秒で解析できます。 その範囲外の日付は、正しく解析または解析できない可能性があります。 負の整数はサポートされていません。 小数部の値は小数点以下 9 桁までサポートされ、結果の型の精度に合わせて切り捨てられます。

ロケール: パターン プレースホルダーはロケールに対応していません。 月と日の名前は英語でのみサポートされています。

パターン リスト

定義済みのパターン リストを名前で渡すことができます (たとえば、 #extended#iso8601#unix)。 次のパターン リストを使用できます。

  • common — 標準で定義されていない一般的に見られるパターン
  • iso8601
  • rfc1036rfc1123rfc2822rfc3164rfc3339rfc4287rfc5322rfc5424rfc6265rfc7231rfc822rfc850rfc9110rfc9557
  • unix — Unix エポック タイムスタンプのみ
  • extended — 上記のすべてのリストの和集合。また、パターンが指定されていない場合の既定値
  • extended-dmy — DMY ロケール固有の形式で拡張
  • extended-mdy — MDY ロケール固有の形式で拡張