2016-07-08 18 views
0

私のコードでは、東部標準時の日付を今日の日付に保存すると表示されますが、正しく表示されます。太平洋標準時間帯では、昨日の日付。日付フィールドとしてOracleに日付を格納しています。オラクルの太平洋標準時に取得される前の日付

太平洋時間の中核日付を特定するために必要な特別なコーディングはありますか?

+0

選択TO_DATE(TO_CHAR(タイムゾーン '6時' でSYSTIMESTAMP、「DD.MM.YYYY HH24:MI:SS ')、' dd.mm.yyyy hh24:mi:ss ')のデュアルから? –

+0

DBにstart_dateフィールドがあります。上記を使用してどのように取得しますか? – user3151468

+0

日付フィールドの「日付」タイプにタイムゾーン付きのタイムスタンプを挿入しますか?はいの場合は、挿入する前にtimezoneを変更する必要があります。insert into some_table(start_date)values(systimestamp at time zone '6:00'); - since convert –

答えて

0

日付にはタイムゾーンがないため、異なるタイムゾーンの日付を保存する場合は、同じタイムゾーンになるように変換する必要があります。その後

CREATE TABLE table_name(id INT, value DATE); 

INSERT INTO table_name VALUES(1, TIMESTAMP '2016-07-07 23:00:00 PST' AT TIME ZONE 'UTC'); 
INSERT INTO table_name VALUES(1, TIMESTAMP '2016-07-07 23:00:00 EST' AT TIME ZONE 'UTC'); 

SELECT id, 
     value AS utc, 
     CAST(
     FROM_TZ(CAST(value AS TIMESTAMP), 'UTC') AT TIME ZONE 'EST' 
     AS DATE 
     ) AS EST, 
     CAST(
     FROM_TZ(CAST(value AS TIMESTAMP), 'UTC') AT TIME ZONE 'PST' 
     AS DATE 
     ) AS PST 
FROM table_name t; 

出力:

ID UTC     EST     PST 
-- ------------------- ------------------- ------------------- 
1 2016-07-08 06:00:00 2016-07-08 01:00:00 2016-07-07 23:00:00 
2 2016-07-08 04:00:00 2016-07-07 23:00:00 2016-07-07 21:00:00 
関連する問題