いくつかの一般的な注意事項:
SYSTIMESTAMP
とSYSDATE
は、データベースサーバーのオペレーティングシステムのタイムゾーンに与えられています。したがって、データベースのタイムゾーン(すなわち、DBTIMEZONE
)の変更は何も変更しません。
CAST (sys_extract_utc(systimestamp) AS TIMESTAMP)
、resp。 cast(systimestamp at time zone 'UTC' as timestamp)
に問題があります。タイムスタンプをUTCに変換しますが、CAST(... AS TIMESTAMP)
によって、その値からタイムゾーン情報が削除されます。それ以上の変換(たとえば、TIMESTAMP WITH TIME ZONE
値)を実行したい場合は、入力されたUTC値はSESSIONTIMEZONE
値と見なされます。
from_tz(CAST (sys_extract_utc(systimestamp) AS TIMESTAMP), '+00:00')
には、以下のん:
- をデータベースサーバーのオペレーティングシステムのタイムゾーンの現在時刻を取得し、タイムゾーン情報が含まれています。を:
-
cast(sysdate as timestamp) at time zone 'UTC'
は、以下行い、この値にカット時間帯情報、UTCに
正しい出力が、冗長変換を
追加タイムゾーン情報(+00:00
)を今回の変換
- 時間内に現在時刻を取得するデータベースサーバーのオペレーティングシステムのゾーンをタイムゾーン情報なしで変更できます。
- TIMESTAMPにキャスト(すべてでは基本的には効果なし)
- あなたのローカル・セッションのタイムゾーン(
SESSIONTIMEZONE
)の時間としてこの値を考慮し、UTCに変換します。データベースサーバーのオペレーティングシステムのタイムゾーンはローカルのセッションのタイムゾーンと同じである場合にのみ
正しい出力が、そうでなければ、間違った結果を取得します。
from_tz(cast(systimestamp at time zone 'UTC' as timestamp), '+0:00')
には、以下のん:
- をデータベースサーバーのオペレーティングシステムのタイムゾーンの現在時刻を取得し、タイムゾーン情報が含まれています。
- UTCこの時間換算
- カット時間帯情報
- 追加この値にタイムゾーン情報(
+00:00
)
正しい出力が、冗長変換
from_tz(cast(systimestamp as timestamp), '+0:00')
は、以下ずに:
- データベースサーバーのオペレーティングシステムのタイムゾーンの現在時刻を取得し、タイムゾーン情報が含まれています。データベースサーバーのオペレーティング・システムのタイムゾーンはUTCである場合にのみ、この値に
- カットタイムゾーン情報は
- 追加のタイムゾーン情報(
+00:00
)
正しい出力。
あなたは単に 'select sys_extract_utc(systimestamp)from dual;'を実行することができます - それだけです。 'from_tz(... sys_extract_utc() '+00:00')'を使うことは冗長です。 –
はい、タイムゾーンの追加は含まれていません。私は一貫したデータを探しています。そのクエリの戻り値の型はまだ 'TIMESTAMP WITH TIME ZONE'ですか? –
'EXTRACT_UTC'は' TIMESTAMP'値を返します。 'TIMESTAMP WITH TIME ZONE'を取得したい場合は、' time zoneでsystimestampを選択 'UTC'からdual ';を実行してください。 –