一尘不染

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

sql

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

我的尝试:

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;

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

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;

但是前导零消失了。


阅读 170

收藏
2021-05-16

共1个答案

一尘不染

看起来好像您不想添加前导零,看起来好像您没有按照想要的方式将日期转换为字符。TO_CHAR()的日期时间格式模型非常强大,请充分利用它。

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

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

例如,以下返回 006

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

如果需要,您可以使用fm上述文档中提到的format模型修饰符,以删除前导空格。

2021-05-16