如何转换时间戳的时区以便在 Oracle 数据库中进行比较?



我们使用的是Oracle 11g,我们有一个带有时间戳列的表,该列不包含时区(简单地定义为TIMESTAMP)。时区写在不同的列中。

我希望能够在考虑时区的同时使用"max"功能。
可能有一个功能可以轻松转换时区,我只是不知道。

我希望能够做这样的事情:

SELECT max(covert_to_timezone(my_timestamp, my_timezone, 'GMT')) FROM my_table

我该怎么做?

====

==============

解决方案:根据Ajith Sasidharan的回答:

SELECT max(from_tz(my_timestamp, my_timezone) at time zone '0:00') FROM my_table

更新:如果您想比较日期,只需使用"投射":

SELECT max(from_tz(cast(my_date as timestamp), my_timezone) at time zone '0:00') FROM my_table

顺便说一句,现在我收到"ORA 01878"错误,这意味着我们的表包含无效时间(DST 狗屎)。

我想你想要这样的函数::

select to_char((from_tz(to_timestamp(to_char(DATABASE_DATE, 'YYYY-MM-DD HH:MI:SS PM'), 'YYYY-MM-DD HH:MI:SS PM') ,'America/New_York')
    at time zone 'America/Los_Angeles'),'YYYY-MM-DD HH:MI:SS PM TZD') as localtime
    from table

相关内容

  • 没有找到相关文章

最新更新