1

是否可以按以下格式显示 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 ; 
4

1 回答 1

3

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

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_zone='<<specify_exact_time_zone_region>>'。例如:

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    
于 2013-10-16T22:11:33.967 回答