如果数字小于两位数,我需要将前导零添加到一个数字中,并将两个这样的数字组合成单个数字,而它们之间没有空格。
我的尝试:
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;
但是领先的零消失了。
答案 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')