【问题标题】:Converting from GMT to UTC从 GMT 转换为 UTC
【发布时间】:2011-07-31 15:28:05
【问题描述】:

在一个表中,所有记录都以 GMT 时间存储。但是通过我的应用程序,我只想显示那些属于 UTC 时区的记录。即,在网页中,我只想显示 UTC 时区下的记录。

从 GMT 转换为 UTC。或者查询数据库获取UTC时区的所有记录。

非常感谢您早日回复。

我在 PHP 中使用 oracle 数据库和应用程序。

【问题讨论】:

标签: php sql oracle


【解决方案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;

最后一个例子,如果它有效,将让您不必担心夏令时等等。

【讨论】:

  • 谢谢...该列的数据类型是 TIMESTAMP(6) .. 数据将由不同时区的不同用户查看,所以我想根据那里的时区显示数据。表中存储的所有数据均为 GMT 时区
【解决方案2】:

我假设您的时间存储为 DATE 值,所有值都存储为 UTC 时间,并且您感兴趣的时区是不变的。要将 UTC 转换为给定的时区,请添加时区的偏移量。在这种情况下,由于感兴趣的时区有一个负偏移量,您需要添加相同的负数。因此,以下内容可能有用:

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

FWIW,在某些地方,转换为当地时间使用非整小时偏移量 - 例如,澳大利亚阿德莱德使用与 GMT 的 +9.5 小时偏移量,而尼泊尔加德满都使用 +5.75 小时偏移量。

分享和享受。

编辑:鉴于您所描述的数据,您最好的选择可能是简单地添加会话时区,如下所示:

SELECT your_gmt_timestamp_field AT TIME ZONE SESSIONTIMEZONE
  FROM your_table

试试这个,看看是否有帮助。

【讨论】:

  • 谢谢...该列的数据类型是 TIMESTAMP(6)。基本上数据将由不同时区的不同用户查看,所以我想根据那里的时区显示数据。表中存储的所有数据均为 GMT 时区
猜你喜欢
  • 2011-10-20
  • 2020-12-14
  • 2018-01-08
  • 2014-11-29
  • 2015-11-09
  • 2010-09-15
  • 2012-09-18
  • 2014-10-12
相关资源
最近更新 更多