ここでの要件は、日付型の列からGMT/UTCで時刻を取得することです。しかし、キャストを使用して日付をタイムスタンプにキャストすると、セッションタイムゾーンがGMTに設定されていても、米国太平洋のタイムゾーンを参照として使用しています。だからfrom_tzを使わない限り、私は望みの結果を見ていません。 oracle sqlに他のタイムゾーン設定がありますが、これはGMTを参照として常に使用するように変更する必要がありますか?Oracle SQLのタイムゾーンの問題
alter session set time_zone='+00:00';
select sessiontimezone from dual;
select current_timestamp from dual;
select sys_extract_utc(cast (sysdate as timestamp)) from dual;
select sys_extract_utc(from_tz(cast (sysdate as timestamp), '-07:00')) from dual;
select sys_extract_utc(current_timestamp) from dual;
Session altered.
SESSIONTIMEZONE
---------------------------------------------------------------------------
+00:00
CURRENT_TIMESTAMP
---------------------------------------------------------------------------
11-APR-16 08.46.42.292173 AM +00:00
SYS_EXTRACT_UTC(CAST(SYSDATEASTIMESTAMP))
---------------------------------------------------------------------------
11-APR-16 01.46.42.000000 AM
SYS_EXTRACT_UTC(FROM_TZ(CAST(SYSDATEASTIMESTAMP),'-07:00'))
---------------------------------------------------------------------------
11-APR-16 08.46.42.000000 AM
SYS_EXTRACT_UTC(CURRENT_TIMESTAMP)
---------------------------------------------------------------------------
11-APR-16 08.46.42.295310 AM
タスク表には、「タスク開始」という日付型列があります。私は、この日付フィールドからUTC時間を取得しようとしています。その一環として、セッションタイムゾーンをGMTに変更してデータを挿入しようとしていたので、単にタイムスタンプに戻しても動作しません。
select task_started from tasks where rownum <2;
TASK_STAR
---------
10-APR-16
desc tasks;
Name Null? Type
----------------------------------------- -------- ----------------------------
...
TASK_STARTED DATE
...
保存された日付(時間付き)と予想される出力の例を挙げることができますか?その列の日付/時刻はどのようなタイムゾーンを表し、どのように知っていますか?そのタイムゾーンを格納している別の列があるか、変換が必要であると想定していますか? –
@AlexPoole私のテーブルには日付のみが格納されているので、これをタイムスタンプに戻しています。私は、テーブルに格納されている日付/時刻は、セッションタイムゾーンを変更したGMTのセッションタイムゾーンを使用していると仮定します。キャスト機能は、アメリカ/パシフィックで時間を戻ってきたので、私は混乱しました。 –
日付の列にはタイムゾーンがありません(ただし、クエリ/クライアントに表示されていなくても常に時間があります)。プレーンタイムスタンプとしてキャストすると、時間は同じままですが、タイムゾーン情報はまだありません。あなたの質問は、日付/時刻をUTCに変換することです。これは、特定のゾーンから保存または提供されていることを意味します。例えば。サーバーのタイムゾーンを意味するsysdateを使用して日付が挿入されていて、それに相当するUTCが必要な場合。本当に必要なものが明確ではないので、データと出力を追加してください。 –