0
在我的代碼中,當我在東部時區保存一個日期爲今天的日期時,它會在我們查看它時正確顯示。但在太平洋時區,它顯示的是以前的日期,即昨天的日期。我們在Oracle中將日期存儲爲日期字段。上一個日期獲取在太平洋時區在oracle中
太平洋時間需要特殊編碼以符合核心日期嗎?
在我的代碼中,當我在東部時區保存一個日期爲今天的日期時,它會在我們查看它時正確顯示。但在太平洋時區,它顯示的是以前的日期,即昨天的日期。我們在Oracle中將日期存儲爲日期字段。上一個日期獲取在太平洋時區在oracle中
太平洋時間需要特殊編碼以符合核心日期嗎?
日期沒有時區 - 所以當你存儲來自不同時區的日期時,你需要確保你將它們轉換爲同一時區。
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
選擇TO_DATE(TO_CHAR(SYSTIMESTAMP在時間區 '6:00',「DD.MM.YYYY HH24:MI:SS '),'dd.mm.yyyy hh24:mi:ss')從雙? –
我在數據庫中有start_date字段。我將如何使用上面的方法檢索它? – user3151468
您在日期字段「日期」類型中插入帶時區的時間戳嗎?如果是,那麼你需要在插入之前更改時區,如下所示:insert into some_table(start_date)values(systimestamp at'6:00'); - 因爲轉換 –