ORACLE SQL 调整时区日期而不转换为时间戳或字符

ORACLE SQL adjust date for timezone without casting to timestamp or char

对于 ORACLE SQL,Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production,

有没有办法将日期(包括date/time)从格林威治标准时间直接转换为当地时间(允许夏令时调整)就像日期(包括date/time)一样?

我见过几个涉及时间戳或使用时间戳和字符转换以及相关时区偏移的解决方案。

不过,我想把所有的事情都当作一个日期。

使用时间戳转换的示例:

SELECT OUR_DATE, from_tz(cast( OUR_DATE as timestamp), 'GMT') at time zone 'US/Eastern'
from OUR_DB.OUR_TBL;

看来您需要这样的东西(如果 Oracle 也有“带时间戳的日期”数据类型,这会容易得多):

...
cast(from_tz(cast(your_date as timestamp), 'UTC') at time zone 'US/Eastern'
  as date) as your_column_alias
...

将日期转换为时间戳,这样你就可以给它一个时区(UTC 是新的 GMT - 这是一个单独的问题),转换为你需要的时区,然后转换回到日期 - 没有时区,没有小数秒。