我们使用的是 Oracle 11g,并且我们有一个包含时间戳列的表,该列不包含时区(简单定义为 TIMESTAMP)。时区写在不同的列中。
我希望能够在考虑时区的同时使用“最大”功能。
可能有一个功能可以轻松转换时区,我只是不知道。
我希望能够做这样的事情:
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
更新:如果你想比较日期,只需使用'cast':
SELECT max(from_tz(cast(my_date as timestamp), my_timezone) at time zone '0:00') FROM my_table
顺便说一句,现在我收到“ORA 01878”错误,这意味着我们的表包含无效时间(DST 狗屎)。