parse_to_timestamp関数

parse_to_timestamp関数は、文字列をタイムスタンプに変換します。指定したstringの形式と照合するpatternパラメータが必要です。

構文:
TIMESTAMP parse_to_timestamp(<string>[, pattern])
セマンティクス:
  • string: string引数は、指定されたpatternの書式のTIMESTAMP値のSTRINGデータ型を取ります。

    ノート:

    タイムスタンプを持つstring引数は、TimeZoneID (特定のタイムゾーンを表す識別子)を使用します。UTCおよびGMTを除き、タイムゾーンには略語ではなく、明確に定義された名前(PST、ISTなど)を使用します。
  • pattern: pattern引数はオプションで、STRINGデータ型を入力として使用します。タイムゾーン記号'z'、'zz'、'zzz'および'v'を除く、Java DateTimeFormatterクラスのすべてのパターン記号をサポートします。サポートされるタイムゾーン記号の詳細は、次の表を参照してください。
    記号 意味 表現
    V タイムゾーンID ゾーンID America/Los_Angeles; Z; -08:30
    O ローカライズされたゾーンオフセット オフセット-O GMT+8; GMT+08:00; UTC-08:00
    X ゼロのゾーンオフセット'Z' オフセット-X Z; -08; -0830; -08:30; -083015; -08:30:15
    x ゾーンオフセット オフセット-x +0000; -08; -0830; -08:30; -083015; -08:30:15
    Z ゾーンオフセット オフセット-Z +0000; -0800; -08:00

    ノート:

    デフォルトのパターンはISO-8601形式です: yyyy-MM-dd'T'HH:mm:ss[.S..S]

    次の表は、タイムゾーン情報を含むstring引数と照合するためにpattern引数に含める必要がある内容を示しています。

    string引数が次の場合 pattern引数に次を含める必要があります
    'Z'で終わる場合 'VV'、'X'、'zzzz'などのゾーン記号。
    America/Los_Angeles、Europe/Parisなど、完全なタイムゾーン名で終わる場合。詳細は、TimeZoneIDのリストを参照してください。 'VV'、'zzzz'などのゾーン記号。
    GMT +/- なんらかの値、で終わる場合 'VV'、'zzzz'またはZoneOffset 'O'、'OOOO'などのゾーン記号。
  • 戻り値: TIMESTAMP(9)
    • stringまたはpattern引数がNULLの場合、この関数はNULLを返します。

例12-20 指定されたpatternを使用するユーザーのストリーミング・アカウントの有効期限stringの解析。

SELECT parse_to_timestamp(sa.account_expiry,"yyyy-MM-dd'T'hh:mm:ss.SSSSSSSSSzzzz")AS DAY
FROM stream_acct sa
WHERE acct_id=1

説明: 問合せでは、string引数の形式と照合するpatternを指定する必要があり、parse_to_timestamp関数によってaccount_expiryの日付がタイムスタンプ値に変換されます。

出力:
{"DAY":"2023-10-18T00:00:00.000000000Z"}

例12-21 指定されたstringを、ゾーン記号を含む指定されたpatternで解析してタイムスタンプに変換。

SELECT parse_to_timestamp('03/14/23 09:04:01 America/Los_Angeles', "MM/dd/yy HH:mm:ss VV") AS TIMESTAMP
FROM BaggageInfo
WHERE ticketNo=1762390789239

説明: この問合せでは、string引数の任意のTimeZoneIDに対してゾーン記号'VV'を使用します。format_timestamp関数にラップしないかぎり、出力タイムスタンプはUTCに対して相対的に表示されます。

出力:
{"TIMESTAMP":"2023-03-14T16:04:01.000000000Z"}

例12-22 指定されたstringを、ゾーン・オフセットを含む指定されたpatternで解析してタイムスタンプに変換。

SELECT format_timestamp(parse_to_timestamp('2024/02/12 18:30:54 GMT+02:00', "yyyy/dd/MM HH:mm:ss OOOO"),"yyyy-MM-dd HH:mm:ss OOOO","GMT+02:00")AS TIMESTAMP
FROM BaggageInfo
WHERE ticketNo=1762390789239

説明: この問合せでは、string引数にTimeZoneID、GMT+02:00があるため、pattern引数にはゾーン記号またはZoneOffsetを含める必要があります。format_timestamp関数にラップすると、出力タイムスタンプがGMT+02:00タイムゾーンで表示されます。

出力:
{"TIMESTAMP":"2024-12-02 18:30:54 GMT+02:00"}