如何在Oracle中的日期中添加前导零?

Jiv*_*van 9 sql oracle oracle11g

如果数字少于两位,我需要将前导零添加到一个数字,并将两个这样的数字组合成单个数字,它们之间没有空格.

我的尝试:

select ( extract (year from t.Dt)
         || to_char(extract (month from t.Dt),'09')
         || to_char(extract (day from t.Dt),'09') ) as dayid 
  from ATM_FACTS t;
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述

所以,我的问题是如何在月 - 月和月 - 日之间删除空格.我用了

select ( extract (year from t.Dt)
         || to_number(to_char(extract (month from t.Dt),'09'))
         || to_number(to_char(extract (day from t.Dt),'09')) ) as dayid 
  from ATM_FACTS t;
Run Code Online (Sandbox Code Playgroud)

但是领先的零消失了.

Ben*_*Ben 21

它看起来不像你想要添加前导零,看起来你没有按照你想要的方式将你的日期转换成一个角色.TO_CHAR()的日期时间格式模型非常强大,充分利用它.

select to_char(dt, 'yyyymmdd') as dayid
  from atm_facts
Run Code Online (Sandbox Code Playgroud)

要真正回答您的问题,您可以使用带有TO_CHAR()的数字格式模型来填充前导.

例如,以下返回 006

select to_char(6, 'fm009') from dual;
Run Code Online (Sandbox Code Playgroud)

您可以使用fm上面文档中提到的格式模型修饰符来删除前导空格(如有必要).