TO_TIMESTAMP_NTZ 関数は、さまざまな型の日付と時刻のデータを TIMESTAMP_NTZ 型のタイムスタンプに変換します。
指定されたタイムゾーンで TIMESTAMP を TIMESTAMP_NTZ に変換
構文
TIMESTAMP_NTZ TO_TIMESTAMP_NTZ(TIMESTAMP <timestamp>, STRING <time_zone>)パラメーターの説明
timestamp:必須。変換する TIMESTAMP 値。
time_zone:必須。使用するタイムゾーン。このパラメーターは STRING 値である必要があります。詳細については、「タイムゾーン」をご参照ください。
戻り値の説明
指定されたタイムゾーンの TIMESTAMP_NTZ 値を返します。次のルールが適用されます:
timestamp が NULL であるか、TIMESTAMP 値でない場合は、エラーが返されます。
time_zone が NULL の場合は、NULL が返されます。
例
次の例では、セッションまたはプロジェクトのタイムゾーンの TIMESTAMP を指定されたタイムゾーンに変換し、TIMESTAMP_NTZ 値を返します。
-- セッション/プロジェクトのタイムゾーンを Asia/Shanghai に設定します。
SET odps.sql.timezone=Asia/Shanghai;
-- 2025-04-08 08:10:30.123456789 が返されます
SELECT TO_TIMESTAMP_NTZ(TIMESTAMP '2025-04-08 16:10:30.123456789', "Etc/GMT");
-- 2025-04-08 17:10:30.123456789 が返されます
SELECT TO_TIMESTAMP_NTZ(TIMESTAMP '2025-04-08 16:10:30.123456789', "Asia/Tokyo");
-- 2025-04-08 16:10:30.123456789 が返されます
SELECT TO_TIMESTAMP_NTZ(TIMESTAMP '2025-04-08 16:10:30.123456789', "Asia/Shanghai");
-- NULL が返されます
SELECT TO_TIMESTAMP_NTZ(TIMESTAMP '2025-04-08 16:10:30.123456789', NULL);format 形式の STRING 型日時データを TIMESTAMP_NTZ に変換
構文
TIMESTAMP_NTZ TO_TIMESTAMP_NTZ(STRING <date>, STRING <format> [,STRING <time_zone>])パラメーターの説明
date:必須。指定されたフォーマットの日付と時刻を表す STRING 値。
format:必須。日付と時刻のフォーマットを指定する STRING 値。次のフォーマット要素がサポートされています:
日付部分のフォーマット要素
%Y/yyyy/YYYY:世紀を含む年を 10 進数で表します。%y:世紀を含まない年を 10 進数 (00-99) で表します。先行ゼロはオプションです。%m/mm/MM:月を 10 進数 (01-12) で表します。%B:月のフルネーム (例:January)。%b/%h:月の省略名 (例:Jan)。%d/dd/DD:日を 10 進数 (01-31) で表します。%e:日を 10 進数 (1-31) で表します。例:02 ではなく 2。%F:%Y-%m-%d (yyyy-mm-dd) と同等です。
時刻部分のフォーマット要素
%H/hh/HH:時 (24 時間表記) を 10 進数 (00-23) で表します。%M/mi/MI:分を 10 進数 (00-59) で表します。%S/ss/SS:秒を 10 進数 (00-60) で表します。%X:HH:MM:SSフォーマットの時刻。%T:%H:%M:%S(HH:MM:SS) と同等です。ff3:ミリ秒を 3 桁の 10 進数 (000-999) で表します。これは秒の小数部を表します。たとえば、00.123に一致させるには%S.ff3を使用します。%Ez:数値形式のタイムゾーン (+HH:MMまたは-HH:MM)。%E<number>S:小数点以下<number>桁の精度を持つ秒。たとえば、00.123に一致させるには%E3Sを使用します。%E*S:完全な 6 桁の精度を持つ秒 (例:00.123456)。
time_zone:オプション。入力文字列のタイムゾーン。このパラメーターは STRING 値である必要があります。このパラメーターを指定しない場合、デフォルトで UTC が使用されます。詳細については、「タイムゾーン」をご参照ください。
戻り値の説明
TIMESTAMP_NTZ 値を返します。次のルールが適用されます:
date、format、または time_zone が NULL の場合、この関数は NULL を返します。
入力 date が format と一致しない場合、または format が無効な場合、この関数は NULL を返します。
例
-- セッション/プロジェクトのタイムゾーン設定は、入力または出力のタイムスタンプに影響しません。
SET odps.sql.timezone=Asia/Shanghai;
-- 2017-11-11 00:00:00.123 が返されます
SELECT TO_TIMESTAMP_NTZ('17-11-11 00:00:00.123','%y-mm-dd hh:mi:ss.ff3');
-- 2017-11-11 00:00:00.123 が返されます
SELECT TO_TIMESTAMP_NTZ('0017-11-11 00:00:00.123','%y-mm-dd hh:mi:ss.ff3');
-- 1970-11-11 00:00:00.123 が返されます。年の要素が欠落しているため、自動的に 1970 に設定されます。
SELECT TO_TIMESTAMP_NTZ('11-11 00:00:00.123','mm-dd hh:mi:ss.ff3');
-- 2025-05-18 15:30:00 が返されます
SELECT TO_TIMESTAMP_NTZ('2025-05-18 15:30:00 MAY','%F %X %B');
-- 2025-05-18 15:30:00 が返されます
SELECT TO_TIMESTAMP_NTZ('2025-05-18 15:30:00 may','%F %X %h');
-- 2025-05-18 15:30:00 が返されます
SELECT TO_TIMESTAMP_NTZ('2025-05-18 15:30:00 may','%F %T %b');
-- 2025-05-18 10:20:00 が返されます
SELECT TO_TIMESTAMP_NTZ('20250518 10:20:00','yyyymm%e %T');
-- 2025-05-18 02:30:00 が返されます
SELECT TO_TIMESTAMP_NTZ('2025-05-18 09:30:00+07:00','%F %H:%M:%S%Ez');
-- 2025-04-08 16:10:30.123456 が返されます
SELECT TO_TIMESTAMP_NTZ("2025-04-08 16:10:30.123456",'%Y-%m-%d %H:%M:%E*S','Etc/GMT') ;
-- 2025-04-08 08:10:30.123 が返されます
SELECT TO_TIMESTAMP_NTZ("2025-04-08 16:10:30.123",'%Y-%m-%d %H:%M:%E3S','Asia/Shanghai');BIGINT 型の時間値を TIMESTAMP_NTZ に変換
構文
TIMESTAMP_NTZ TO_TIMESTAMP_NTZ(BIGINT <time>, STRING <date_part>)パラメーターの説明
time:必須。変換する時間値を指定します。このパラメーターは BIGINT 値である必要があります。
date_part:必須。time パラメーターの時間単位を指定する STRING 値。サポートされている値は、MILLIS (ミリ秒)、MICROS (マイクロ秒)、および NANOS (ナノ秒) です。
戻り値の説明
TIMESTAMP_NTZ の UTC 値を返します。次のルールが適用されます:
time が NULL の場合、エラーが返されます。
date_part が NULL の場合、この関数は NULL を返します。
例
time パラメーターは、ミリ秒 (MILLIS)、マイクロ秒 (MICROS)、またはナノ秒 (NANOS) 単位の期間を表す BIGINT 値です。この関数は、この期間をエポックタイム 1970-01-01 00:00:00 UTC に加算し、結果を TIMESTAMP_NTZ 値として返します。
-- セッション/プロジェクトのタイムゾーン設定は、入力または出力のタイムスタンプに影響しません。
SET odps.sql.timezone=Asia/Shanghai;
-- 1973-03-03 09:35:41.234 が返されます
SELECT TO_TIMESTAMP_NTZ(99999341234, 'MILLIS');
-- 1970-01-02 03:46:39.341234 が返されます
SELECT TO_TIMESTAMP_NTZ(99999341234, 'MICROS');
-- 1970-01-01 00:01:39.999341234 が返されます
SELECT TO_TIMESTAMP_NTZ(99999341234, 'NANOS');
-- 1966-10-31 14:24:18.766 が返されます
SELECT TO_TIMESTAMP_NTZ(-99999341234, 'MILLIS');
-- NULL が返されます
SELECT TO_TIMESTAMP_NTZ(99999341234, NULL);関連関数
TO_TIMESTAMP_NTZ は日付関数です。日付の計算および変換関数の詳細については、「日付関数」をご参照ください。