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

时间:2013-05-16 10:56:29

标签: 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;

结果:

enter image description here

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

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;

但是领先的零消失了。

2 个答案:

答案 0 :(得分:20)

看起来您不想添加前导零,看起来您没有按照您想要的方式将日期转换为角色。 TO_CHAR()的datetime format model非常强大,可以充分利用它。

select to_char(dt, 'yyyymmdd') as dayid
  from atm_facts

要真正回答您的问题,您可以使用带有TO_CHAR()的number format model来填充前导。

例如,以下内容返回006

select to_char(6, 'fm009') from dual;

您可以使用上述文档中提到的格式模型修饰符fm来删除前导空格。

答案 1 :(得分:2)

是不是DATE?您可以在一个to_char语句中格式化它们:

to_char(t.Dt, 'YYYYMMDD')