如何从Oracle中的日和月值中删除前导零?

时间:2018-08-31 04:59:16

标签: sql oracle

我想从结果中删除前导零。而且我在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中的日和月值中删除前导零?我怎么了?

2 个答案:

答案 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

SQL Fiddle Demo