2011-04-07 108 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