我正在尝试更改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;
提前感谢工厂
答案 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
DATE
到TIMESTAMP
:
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;