oracle - 在 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 知道“夏季”和“冬季”时间之间的差异(DST 调整)。
推荐阅读
- php - Symfony 锁组件允许在不释放之前的作业锁的情况下执行相同的 cron
- javascript - 使用 Array.from() 或 insertAdjacentElement 意外更改属性值
- android - 需要帮助为我的 gps (NEO 6m) 和 arduino 创建自定义应用程序
- android - 如何订阅 Firebase 消息频道
- postgresql - 我们如何将 postgres 数据库的管道设置为 neo4j 数据库?
- android - 为什么我在 react native 中的组件在组件状态发生变化后没有被重新渲染?
- rundeck - 我在哪里可以找到 Rundeck SCM 配置?
- python - Discordpy 从字符串中提及用户
- php - 如何从 URL 中删除 %20
- message-queue - How to backup all streams in JetStream server?