2016-09-22 69 views
-1

如果我有TO_DATE('20160101'YYMMDD)和TO_DATE('20160104',YYMMDD),我想要使用2个格式化的日期,我想要接收此输出:Oracle在两个日期之间将日期格式化为字符串

20160101 
20160102 
20160103 
20160104 

有没有一种快速的方法来实现这一点,而不使用PL/SQL?

谢谢大家!

回答

0

to_date()中的格式掩码也必须包含在单引号内。

要生成字符串格式的输出,您需要应用to_char()具有相同的格式掩码。

select to_char(to_date('20160101', 'YYYYMMDD') + level - 1, 'YYYYMMDD') as dt 
from dual 
connect by level <= 1 + to_date('20160104', 'YYYYMMDD') - to_date('20160101', 'YYYYMMDD') 
; 


DT  
-------- 
20160101 
20160102 
20160103 
20160104 
+0

是的抱歉,我错了英文和意大利文日期时间格式,所以它不工作,无论如何,谢谢你完美的工作! – Chrix1387

0
SELECT DATE '2016-01-01' + LEVEL - 1 
FROM DUAL 
CONNECT BY LEVEL <= DATE '2016-01-04' - DATE '2016-01-01' + 1; 
+0

感谢您的回答,但我需要相同的日期格式:“20160102”等不日期 – Chrix1387

+2

@ Chrix1387就用'TO_CHAR(DATEVALUE,format_mask)'格式化字符串和/或' TO_DATE(stringvalue,format_mask)'从字符串中获取日期。 – MT0

+0

'按层连接'是正确的方法来做到这一点,如果你需要另一种格式@Chrix1387,然后格式化结果'to_char(mydate,'RRRRMMDD')' – Plirkee