oracle時間轉字串去除前導0

nayi_224發表於2018-07-19

select to_char(trunc(sysdate, 'y'), 'fmyyyymmdd') from dual;
輸出
201811

實際上,fm是作用於後面的每一個表示式的(不包括text表示式)。比如
select to_char(trunc(sysdate, 'y'), 'fmdy"000u"; ,.,.yyyymmadddddddddyyy') from dual;

輸出
星期一000u; ,.,.20181公元11118
可以看到,除了"000u"以外全部去除了前導零。

無法正常生效的情況
1.fm可以作用於後面所有的表示式,但是當遇到某些表示式之後,會失去對後續表示式的效果。目前我只發現了3個。ds ts dl

select to_char(trunc(sysdate, 'y'), 'fm dl yyy') from dual;
輸出
2018年01月01日 星期一 018
並沒有將yyy的前導零去除。
2.同一個”Format Model Modifiers”(即fm,fx) 連續出現偶數次會失效。
select to_char(trunc(sysdate, 'y'), 'fmfmyyy') from dual;失效
select to_char(trunc(sysdate, 'y'), 'fmfmfmyyy') from dual;有效

當fm與fx同時生效時,fm優先順序更高
select to_char(trunc(sysdate, 'y'), 'fxfmyyy') from dual;有效

失效後的解決方法
後面再加一個fm
select to_char(trunc(sysdate, 'y'), 'fmds fmyyy') from dual;
輸出
`2018-1-1 18“

相關文章