在 Oracle 中的 to_char() 中显示时区描述

iam*_*esh 5 sql oracle

我有一个 SQL 查询

select to_char(cast(sysdate as timestamp with LOCAL time zone), 'YYYY-MM-DD, HH24:MI:SS TZR') from dual
Run Code Online (Sandbox Code Playgroud)

此返回输出为

2015-08-06, 04:09:10 +05:30 
Run Code Online (Sandbox Code Playgroud)

任何人都有任何线索可以得到如下输出

2015-08-06, 04:09:10 IST
Run Code Online (Sandbox Code Playgroud)

提前致谢。

Wer*_*eit 3

一般来说,您无法显示TIMESTAMP WITH LOCAL TIME ZONE值的时区,因为根据定义,它始终是您当前的本地时区。

+05:30是您当前的时区,您可以通过以下方式验证:

SELECT SESSIONTIMEZONE FROM dual;
Run Code Online (Sandbox Code Playgroud)

你不能这样做

ALTER SESSION SET TIME_ZONE = 'IST';
Run Code Online (Sandbox Code Playgroud)

因为IST也用于“冰岛标准时间”、“爱尔兰标准时间”、“以色列标准时间”等。

但是,您可以使用这个:

SELECT TO_CHAR(CAST(LOCALTIMESTAMP AS TIMESTAMP WITH LOCAL TIME ZONE), 'YYYY-MM-DD, HH24:MI:SS TZD') FROM dual;
Run Code Online (Sandbox Code Playgroud)

注意,TZD表示“夏令时信息”。如果印度实行夏令时,您的 TZD 可能会发生变化。