Как убрать начальные нули из значений дня и месяца в Oracle? - PullRequest
0 голосов
/ 31 августа 2018

Я хочу удалить ведущие нули из результатов. И я нашел ответ здесь Как убрать начальные нули из значений дня и месяца в Oracle при разборе строки, используя функцию to_char? , но у меня это не работает.

Я попробовал скрипт следующим образом:

 SELECT TO_CHAR(SYSDATE, 'dd.mm.yyyy'),
        TO_CHAR(SYSDATE - 20, 'fmdd-fmmm-yyyy')
   FROM DUAL;

Я получил следующий результат:

31.08.2018 | 11-08-2018

Тогда я попробовал:

SELECT TO_CHAR(SYSDATE, 'dd.mm.yyyy'),
       TO_CHAR(SYSDATE - 20, 'fmMM')
  FROM DUAL;

Вроде бы правильный результат:

31.08.2018 | 8

Так как я могу удалить ведущие нули из значений дня и месяца в Oracle? Что со мной не так?

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Использование модели формата в качестве 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

0 голосов
/ 31 августа 2018

Для вашей конкретной маски формата dd.mm.yyyy вы можете попробовать использовать REGEXP_REPLACE для удаления начальных нулей из компонентов дня и месяца:

SELECT
    REGEXP_REPLACE(TO_CHAR(SYSDATE, 'dd.mm.yyyy'), '0([0-9])\.', '\1.') AS date_field
FROM dual;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...