【发布时间】:2016-09-22 22:37:40
【问题描述】:
我正在尝试使用 2 个格式化日期,如果我有 TO_DATE('20160101' YYMMDD) 和 TO_DATE('20160104', YYMMDD) 我想收到这个输出:
20160101
20160102
20160103
20160104
有没有不使用 PL/SQL 的快速方法来实现这一点?
谢谢大家!
【问题讨论】:
标签: oracle
我正在尝试使用 2 个格式化日期,如果我有 TO_DATE('20160101' YYMMDD) 和 TO_DATE('20160104', YYMMDD) 我想收到这个输出:
20160101
20160102
20160103
20160104
有没有不使用 PL/SQL 的快速方法来实现这一点?
谢谢大家!
【问题讨论】:
标签: oracle
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
【讨论】:
SELECT DATE '2016-01-01' + LEVEL - 1
FROM DUAL
CONNECT BY LEVEL <= DATE '2016-01-04' - DATE '2016-01-01' + 1;
【讨论】:
TO_CHAR( datevalue, format_mask ) 格式化字符串和/或TO_DATE( stringvalue, format_mask ) 从字符串中获取日期。
connect by level 是这样做的正确方法,如果您需要另一种格式 @Chrix1387 则只需使用 to_char(mydate,'RRRRMMDD' ) 格式化结果
YYYY 进行过一次或两次不理想的转换