Как удалить ведущие нули из значений дня и месяца в 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
В принципе, вы должны конвертировать в число каждую часть даты