おそらく古典的です...OracleでSYSDATEのUTC値を取得する簡単なトリックを知っていますか(8番目のバージョンでも何かが機能するようにするのが最善です)。
今のところ私はカスタム関数を持っています:(
乾杯、
ステファン
使用できます
SELECT SYS_EXTRACT_UTC(TIMESTAMP '2000-03-28 11:30:00.00 -02:00') FROM DUAL;
タイムゾーンを変更する必要がある場合もあります
ALTER SESSION SET TIME_ZONE = 'Europe/Berlin';
またはそれを読む
SELECT SESSIONTIMEZONE, CURRENT_TIMESTAMP FROM dual;
select sys_extract_utc(systimestamp) from dual;
ただし、Oracle8では機能しません。
通常、私はDATE列を使用しますが、一部の回答で使用される、より大きくはより正確なTIMESTAMPを使用します。
以下は、現在のUTC日付をその日付(DATE)として返します。
CAST(sys_extract_utc(SYSTIMESTAMP) AS DATE)
_UTC
私はよくこのような日付を保存しますが、通常は開発者がわかりやすいようにフィールド名がで終わります。これにより、ユーザーのクライアントによる直前の変換まで、タイムゾーンの複雑さを回避できます。Oracleは一部のデータ型でタイムゾーンの詳細を格納できますが、これらのタイプはDATEよりも多くの表スペースを必要とし、元のタイムゾーンの知識は必ずしも必要ではありません。
私が使用しているもの:
SELECT CAST(SYSTIMESTAMP AT TIME ZONE 'UTC' AS DATE) FROM DUAL;
それは私にとってはうまくいっています。
sysdateの日付だけでなくタイムスタンプが必要な場合は、systimestampを使用してタイムゾーンを指定できます。
select systimestamp at time zone 'UTC' from dual
出力:29-AUG-17 06.51.14.781998000 PM UTC