適用対象:はい Databricks Runtime 18.1 以降と![]()
exprが文字列の場合は、指定された形式のリスト内の最初の一致パターンに従って、それをTIMESTAMPに解析します。 1 つ以上の形式で、定義済みの形式の一覧を参照できます。
exprが数値型の場合は、Unix タイムスタンプとして解析します。
構文
parse_timestamp(expr [, { pattern [...] } ])
引数
-
expr:
TIMESTAMPに解析する文字列または数値。 受け入れられる型は次のとおりです。-
TINYINT、SMALLINT、INT、BIGINT -
FLOAT、DOUBLE -
DECIMAL(最大 18 精度) STRING
-
-
pattern: タイムスタンプ パターンの省略可能なリスト、または
#iso8601や#rfc3339などの定義済みリストへの参照。 タイムスタンプ パターンは 定数文字列である必要があります。 パターンが指定されていない場合は、#extendedを指定することと同じです。
返品
解析されたexprを表すTIMESTAMP。
exprが文字列の場合は、最初の一致パターンに従って解析されます。 いずれのパターンも一致しない場合、関数はエラーを発生させます。
exprが数値の場合、常に Unix タイムスタンプとして解析されます。
exprがNULL場合、関数はNULLを返します。
解析が失敗したときにエラーの代わりに NULL を返すには、 try_parse_timestamp 関数を使用します。
メモ
- パターン リストに
NULL値が含まれている場合、それらは無視されます。 指定されたすべてのパターンがNULL場合、結果はNULL。 - タイムスタンプがタイムゾーン情報を含まないパターンと一致する場合は、セッションタイムゾーンで解析されます。
エラー条件
- CANNOT_PARSE_TIMESTAMP
- DATATYPE_MISMATCH。UNEXPECTED_INPUT_TYPE
- INVALID_PARAMETER_VALUE。パターン
- DATATYPE_MISMATCH。NON_FOLDABLE_INPUT
例示
-- 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
- rfc1036、 rfc1123、 rfc2822、 rfc3164、 rfc3339、 rfc4287、 rfc5322、 rfc5424、 rfc6265、 rfc7231、 rfc822、 rfc850、 rfc9110、 rfc9557
- unix — Unix エポック タイムスタンプのみ
- extended — 上記のすべてのリストの和集合。また、パターンが指定されていない場合の既定値
- extended-dmy — DMY ロケール固有の形式で拡張
- extended-mdy — MDY ロケール固有の形式で拡張