2016-09-22 2 views
-1

Я пытаюсь работать с двумя отформатированными датами, если у меня TO_DATE ('20160101' YYMMDD) и TO_DATE ('20160104', YYMMDD) Я бы хотел получить этот вывод: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

'connect by level' - правильный способ сделать это, если вам нужен другой формат @ Chrix1387, тогда просто отформатируйте результат с помощью 'to_char (mydate, 'RRRRMMDD')' – Plirkee

Смежные вопросы