将数月转换为日期字符串

时间:2015-11-19 15:54:45

标签: sql oracle

我有几个月了。

我希望以YYMM

的格式代表他们多年

e.g。

5 -> 0005
13 -> 0101
24 -> 0200

有没有人知道在Oracle SQL中执行此操作的非复杂方法?

3 个答案:

答案 0 :(得分:3)

一些数学和一些格式化是要走的路:

with sample_data as (select 5 num from dual union all
                     select 13 num from dual union all
                     select 24 num from dual union all
                     select 1400 num from dual)
select to_char(floor(num/12), 'fm9999909')||to_char(mod(num, 12), 'fm09') yrmn
from   sample_data;

YRMN       
-----------
0005       
0101       
0200       
11608    

我加入了一个超过100年的只是为了向你展示它的样子;我不知道你的情况是否存在这种可能性,或者你是否希望其他值被填零,因为你没有说。

答案 1 :(得分:0)

select lpad(trunc(yourValue/12),2,'0')||lpad(mod(yourValue,12),2,'0') result
  from dual

答案 2 :(得分:-1)

试试这个;

select right("0" + convert(varchar(20), convert(numeric(10,0), 37/12)), 2)
                 + right("0" + convert(varchar(20), 37%12), 2)

0301 

我用过" 37"例如。