Как удалить ведущие нули из значений дня и месяца в Oracle, при синтаксическом анализе на строку с использованием функции to_char?

Я хочу получить дату без ведущих нулей перед значениями дня и месяца в предложении select. Если я выполнил следующий запрос

 select to_char(sysdate, 'dd.mm.yyyy') from dual;

В результате я получу 21.03.2014. Более того, если сегодня было, например, 7 марта 2014 года, я получил бы 07.03.2014. Как я могу избавиться от этих ведущих нулей?

Ответ 1

select   to_char(sysdate,'DD.MM.YY') -- Without Fill Mode
,        to_char(sysdate-20,'fmDD.fmMM.YY')  -- With Fill Mode, 20 days ago
  from dual;

Возвращает

21.03.14    | 1.3.14

Режим заполнения FM.

В элементе формата datetime функции TO_CHAR этот модификатор подавляет пробелы в последующих символьных элементах (например, MONTH) и подавляет начальные нули для последующих элементов числа (например, MI) в модели формата даты. Без FM результат символьного элемента всегда правильно дополняется пробелами до фиксированной длины, и ведущие нули всегда возвращаются для элемента числа. С FM, который подавляет пустое заполнение, длина возвращаемого значения может изменяться.

Ответ 2

Попробуйте следующее:

select to_char(to_date('20-oct-2000'),'fmmm/dd/fmrr') from dual

Вышеприведенный запрос удалит ведущие нули из значений дня и месяца в Oracle.

Ответ 3

Это довольно далеко не элегантно, но работает:

select to_number(to_char(sysdate,'dd')) || '.' || to_number(to_char(sysdate,'mm')) || '.' || to_number(to_char(sysdate,'yyyy')) from dual

В принципе, вы должны конвертировать в число каждую часть даты