当使用to_char函数解析为字符串时,如何从Oracle中的日期和月份值中删除前导零?

时间:2014-03-21 07:13:34

标签: oracle date select plsql format

我想在select语句中检索日期和月份值前面没有前导零的日期。如果我执行以下查询

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

我将在21.03.2014获得结果。此外,如果今天是,例如,2014年3月7日,我将得到07.03.2014。我怎样才能摆脱这些领先的零?

3 个答案:

答案 0 :(得分:40)

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 Fill模式。

在TO_CHAR函数的日期时间格式元素中,此修饰符会抑制后续字符元素(例如MONTH)中的空白,并在日期格式模型中抑制后续数字元素(例如MI)的前导零。如果没有FM,则字符元素的结果始终用空白填充到固定长度,并且总是为数字元素返回前导零。使用FM来抑制空白填充,返回值的长度可能会有所不同。

答案 1 :(得分:2)

试试这个:

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

上述查询将从Oracle中的日期和月份值中删除前导零。

答案 2 :(得分:0)

这远非优雅,但它有效:

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

基本上,您可以将日期的每个部分转换为数字