Oracle SYSDATE格式更改

时间:2017-03-15 08:42:57

标签: sql oracle

我正在尝试更改Oracle SYSDATE的格式,以便在运行PL / SQL过程时使用特定格式。这种格式实际上是不必要的,但我更新了一个旧表,由于某些集成需要维护这种格式。我的问题是我无法复制格式。 所需格式为:15/MAR/17 09:31:08.000000000

目前以下是我能得到的最接近的,我不知道如何更改MM来显示MAR而不是03.

SELECT TO_CHAR
    (SYSDATE, 'DD/MM/YY HH24:MI:SS.SSSSSSSSS')
FROM DUAL;

提前感谢工厂

3 个答案:

答案 0 :(得分:2)

要转换为您想要的格式的文本(除非您的数据库设计很糟糕,否则不应该这样做。)

substr(to_char(systimestamp,'DD/MON/YY HH24:MI:SS.FF')  || '000000000', 1, 28)

to_char(sysdate,'DD/MON/YY HH24:MI:SS')  || '.000000000'

有关格式掩码的详细信息,请参见here

注意:sysdate不会返回秒的分数,因此如果需要,请使用systimestamp

答案 1 :(得分:1)

SYSDATE属于DATE类型,不支持小数秒,因此您需要将.000000000与格式化日期连接起来:

SELECT TO_CHAR(
         SYSDATE,
         'DD/MM/YY HH24:MI:SS'
       ) || '.000000000'
FROM   DUAL;

或者您需要CAST DATETIMESTAMP

SELECT TO_CHAR(
         CAST( SYSDATE AS TIMESTAMP ),
         'DD/MM/YY HH24:MI:SS.FF9'
       )
FROM   DUAL;

答案 2 :(得分:0)

MON将显示Month而不是数字。

SELECT TO_CHAR
    (SYSDATE, 'DD/MON/YY HH24:MI:SS."000000000"')
FROM DUAL;