web-dev-qa-db-ja.com

OracleでSYSDATEのUTC値を取得する方法

おそらく古典的な... OracleでSYSDATEのUTC値を取得する簡単なトリックをご存知ですか(8番目のバージョンでも何かが動作するのがベストです)。

今のところ、私はカスタム関数を持っています:(

乾杯、

ステファン

39
stic

使用できます

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;
39
Jonathan
select sys_extract_utc(systimestamp) from dual;

ただし、Oracle 8では動作しません。

37
Juris

通常、私はDATE列を使用しますが、より大きくはありませんが、より正確なTIMESTAMPです。

次の例では、現在のUTC日付を日付として返します。

CAST(sys_extract_utc(SYSTIMESTAMP) AS DATE)

UTC日付での作業は、タイムゾーンの複雑さを心配する必要がないため、素晴らしいです。ユーザーへの最終的な表示のみがオフセットまたはその他のトラブルを必要とします。

19
Charles Burns

Sysdateを含む日付だけでなくタイムスタンプが必要な場合は、systimestampを使用してタイムゾーンを指定できます。

select systimestamp at time zone 'UTC' from dual

出力:29-AUG-17 06.51.14.781998000 PM UTC

4
Nathan Strutz

私は使用しています:

SELECT CAST(SYSTIMESTAMP AT TIME ZONE 'UTC' AS DATE) FROM DUAL;

それは私のためにうまく機能しています。

2
Pedro Sobral