Oracle 使用时区指定日期/时间格式
是否可以按以下格式显示sysdateOracle 使用时区指定日期/时间格式,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, '
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,则会得到系统的日期、时间和时区。这可能是一个更好的方法。