2011-04-07 137 views
0

在表格中,所有記錄都以GMT時間存儲。但通過我的應用程序,我想只顯示落入UTC時區的記錄。即在我想要顯示UTC時區下的記錄的網頁中。從GMT轉換爲UTC

從GMT轉換爲UTC。或者查詢數據庫以獲取UTC時區的所有記錄。

我很欣賞早日回覆。

我在PHP中使用oracle數據庫和應用程序。

+7

是不是GMT和UTC有效相同? – 2011-04-07 12:09:14

+4

UTC沒有夏令時 – Eelke 2011-04-07 12:17:53

+5

當我們切換到英國的夏令時(即BST)時,GMT也沒有。(見http://en.wikipedia.org/wiki/Greenwich_Mean_Time) – 2011-04-07 12:21:52

回答

0

我假設您的時間存儲爲DATE值,所有值都存儲爲UTC時間,並且您感興趣的時區是恆定的。要從UTC轉換爲給定時區,請添加時區的偏移量。在這種情況下,由於感興趣的時區具有負偏移量,因此您需要添加相同的負數。因此,下面可能是有用的:

SELECT DATE_FIELD + INTERVAL '-5' HOUR 
    FROM SOME_TABLE 
    WHERE <whatever> 

FWIW,有些情況下轉換爲本地時間使用非全時偏移一些地方 - 例如,阿德萊德,澳大利亞使用9.5小時從GMT偏移,尼泊爾的加德滿都使用了+5.75小時。

分享和享受。

編輯:鑑於如你所描述它的數據,你最好的選擇可能是簡單地在會話時區添加如下:

SELECT your_gmt_timestamp_field AT TIME ZONE SESSIONTIMEZONE 
    FROM your_table 

試試這個,看看是否有幫助。

+0

謝謝...列的數據類型是TIMESTAMP(6)。基本上數據將被不同的用戶在不同的時區查看,所以我想根據那裏的時區顯示數據。存儲在表中的所有數據都在GMT時區 – 2011-06-08 03:57:37

+0

@Santhosh:請參閱上面編輯的響應。 – 2011-06-08 18:29:08

1

Greenwich Mean Time維基百科:

它[GMT]可以說是相同的協調世界時(UTC)。

關於轉換,你可以添加/刪除的時間間隔,但是,只要我知道,Oracle支持有/無時間戳時區:

select now() at time zone 'UTC' as utc, 
     now() at time zone 'EST' as est, 
     now() at time zone 'Europe/London' as london; 

最後一個例子,如果它的工作原理,可以讓你不用擔心日光節約等等。

+0

謝謝...該列的數據類型是TIMESTAMP(6)..數據將由不同的用戶在不同的時區查看,所以我想根據那裏的時區顯示數據。存儲在表格中的所有數據都在GMT時區 – 2011-06-08 03:59:29