在Oracle中将UTC时间戳转换为AEDT以考虑夏令时



从UTC转换为AEST(澳大利亚东部标准时间(不考虑夏令时,因为现在是+11小时,但此脚本仍使用10小时进行转换:

Select from_tz (cast(DateField as TIMESTAMP),'UTC') at Time Zone 'Australia/Sydney' as AEST

有没有什么直观的方法可以让它在夏天11小时,在冬天10小时,而不必创建一个函数并对其进行硬编码?

不确定您是如何确定您的公式";不考虑夏令时;。它在我的系统上运行。请注意,date文字假定一天中的时间是午夜。然后比较:

select from_tz (cast(datefield as timestamp),'UTC') 
at time zone 'Australia/Sydney' as aest
from   ( select date '2020-07-31' as datefield from dual union all
select date '2020-12-15'              from dual
)
;

AEST                                
------------------------------------
2020-07-31 10:00:00 Australia/Sydney
2020-12-15 11:00:00 Australia/Sydney

显然,Oracle意识到";夏季;以及";冬季;时间(夏令时调整(。

最新更新