oracle - 选择缩写时区
问题描述
我正在尝试编写一个查询来返回给定区域的当前缩写时区。如...
“美国/纽约” “美国/洛杉矶”
我希望将这些转换为...
'EDT' 'PDT'
我可以使用本地时区来做到这一点
select TO_CHAR(CAST(SYSDATE AS TIMESTAMP WITH LOCAL TIME ZONE),'TZD') from dual;
返回“PDT”。但我需要它来返回任何地区的时区。希望有类似...
select TO_CHAR(CAST(SYSDATE AS TIMESTAMP AT TIME ZONE 'America/Los_Angeles'),'TZD') from dual;
但甲骨文不喜欢这种语法。知道如何得到它吗?
解决方案
AT TIME ZONE
是时间戳修饰符,不属于CAST
表达式。
因此:
select to_char(cast(sysdate as timestamp) at time zone 'America/Los_Angeles', 'TZD')
from dual;
或更简单:
select to_char(systimestamp at time zone 'America/Los_Angeles', 'TZD') from dual;
这是获取所有当前时区的查询:
select distinct tzname, to_char(systimestamp at time zone tzname, 'TZD') as zone
from v$timezone_names
order by tzname;
推荐阅读
- wordpress - 是否可以动态更改页面内的简码
- distributed - 有人对 Multi-Paxos 有什么建议吗?
- excel - INDEX & MATCH 公式避免重复
- json - plpgsql在循环之前提取数组的元素
- php - 带有 SQL 变量的 SQL 查询在 Doctrine 中不起作用,但如果手动执行则起作用
- cgroups - RHEL8 上 ubi8 容器中带有 systemd 的 Rootless Podman 无法正常工作
- apache-spark-sql - 如何在 Spark SQL 中自定义排序?
- asp.net-core - 没有 ORM 的 ABP
- unity3d - 如何为统一 2D 角色控制器添加跳跃延迟?
- amazon-web-services - ASK-CLI 部署不适用于托管“使用 CloudFormation 的 AWS” - Alexa 区域“默认”:访问被拒绝