我想从结果中删除前导零。而且我在How to remove leading zeroes from day and month values in Oracle, when parsing to a string using a to_char function?处找到了答案,但这对我不起作用。
我尝试了如下脚本:
SELECT TO_CHAR(SYSDATE, 'dd.mm.yyyy'),
TO_CHAR(SYSDATE - 20, 'fmdd-fmmm-yyyy')
FROM DUAL;
我得到的结果如下:
31.08.2018 | 2018年11月8日
然后我尝试了:
SELECT TO_CHAR(SYSDATE, 'dd.mm.yyyy'),
TO_CHAR(SYSDATE - 20, 'fmMM')
FROM DUAL;
似乎得到正确的结果:
31.08.2018 | 8
那么我该如何从Oracle中的日和月值中删除前导零?我怎么了?
答案 0 :(得分:0)
对于dd.mm.yyyy
的特定格式掩码,您可以尝试使用REGEXP_REPLACE
从日期和月份分量中删除前导零:
SELECT
REGEXP_REPLACE(TO_CHAR(SYSDATE, 'dd.mm.yyyy'), '0([0-9])\.', '\1.') AS date_field
FROM dual;
答案 1 :(得分:0)
使用格式模型为fmdd.mm.yyyy
且仅带一个前导fm
即可:
SELECT TO_CHAR(SYSDATE, 'dd.mm.yyyy') today,
TO_CHAR(SYSDATE - 30, 'fmdd.mm.yyyy') former_day,
TO_CHAR(TO_DATE('2018-08-01','yyyy-mm-dd'), 'fmdd.mm.yyyy') former_day2
FROM DUAL;
TODAY FORMER_DAY FORMER_DAY2
---------- ----------- -----------
31.08.2018 1.8.2018 1.8.2018