2015-11-19 41 views
1

我有幾個月的時間。將幾個月轉換爲日期字符串

我謹代表他們作爲格式YYMM

例如數年或數月

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

有誰知道在Oracle SQL中執行此操作的非複雜方式嗎?

+0

有一條信息缺失:月份的起始時間點是多少?表格說明也如此... – kevinsky

+0

你的意思是你想除以十二,並採取結果和其餘。檢查Oracle REMAINDER功能。 – rghome

+0

我想你需要'floor'和'mod'的組合。然後你可以玩**格式的面具**。 –

回答

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年以上只是爲了告訴你如何它可能看起來;我不知道你的情況是否有這種可能性,或者你是否希望其他值因爲你沒有說而被填零。

+0

正是我在想的。只有格式掩碼可以留給OP的管轄權;-) +1 –

-1

試試這個;

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

0301 

我以「37」爲例。

+1

這對Oracle來說不起作用 – Boneist

+0

對不起,我錯過了oracle,但它可以在mssql或sybase上工作:) –

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