Oracle 使用时区指定日期/时间格式

Oracle 使用时区指定日期/时间格式,oracle,plsql,Oracle,Plsql,是否可以按以下格式显示sysdate Wed Oct 16 15:04:44 MDT 2013 这是unix日期格式 echo `date` 编辑:最新版本缺少时区信息。此外,我不确定这是否是最优雅的解决方案: SELECT TO_CHAR (sysdate, 'DY') || ' ' || to_char(sysdate, 'MON DD') || ' ' || to_char(sysdate, 'HH24:MM:SS' ) || ' ' || to_char(sysdate, '

是否可以按以下格式显示sysdate

Wed Oct 16 15:04:44 MDT 2013
这是unix日期格式

echo `date`
编辑:最新版本缺少时区信息。此外,我不确定这是否是最优雅的解决方案:

SELECT TO_CHAR (sysdate, 'DY') || ' ' || to_char(sysdate, 'MON DD') || ' ' ||     to_char(sysdate, 'HH24:MM:SS' ) || ' ' || to_char(sysdate, 'YYYY' )  
FROM DUAL ; 

sysdate
返回不包含时区信息的
date
数据类型的值。为了能够显示时区区域的缩写版本,您需要使用时区数据类型对时间戳的值进行操作,并在日期-时间格式掩码中使用
TZD
format元素:

select to_char( cast(sysdate as timestamp with local time zone)
              , 'Dy Mon dd hh24:mi:ss TZD yyyy') as res
 from dual
结果:

RES                           
-------------------------------
Thu Oct 17 02:14:00 PDT 2013   

编辑

2013年10月16日星期三12:0是我得到的

尝试显式指定会话的确切时区区域。因为可能有多个时区区域与一个偏移量关联,oracle将无法选择一个并返回null。因此,在执行查询之前,请执行
alter session set time\u zone=''
。例如:

SQL> alter session set time_zone='Canada/Mountain';

Session altered.

SQL> select to_char( cast(sysdate as timestamp with local time zone)
  2                    , 'Dy Mon dd hh24:mi:ss TZD yyyy') as res
  3       from dual;

RES                                                                             
-------------------------------                                                 
Thu Oct 17 02:51:14 MDT 2013    

到目前为止你试过什么?您不需要
回显'date`
,您只需说
日期
,对吗?祝你好运。我正在尝试复制unix显示日期/时间的方式。如果我只做回显日期,它就会输出日期。@David Aldridge,请看我的编辑。我得到的是2013年10月16日星期三:12:0。如果使用SYSTIMESTAMP而不是SYSDATE,则会得到系统的日期、时间和时区。这可能是一个更好的方法。