在实际数据处理的过程中,存在日期不连续的问题,可能会导致数据传到前后端出现异常,为了避免这种问题,通常会从数据端进行日期不全的处理:
以下为补全年份的案例:
sql
with x as
(select 开始年份 +(level-1)as 年份
from(select extract①(YEAR from min(hiredate))as 开始年份.
extract(YEAR from max(hiredate))as 结束年份
from emp)
connect by② level③ <= 结束年份 - 开始年份 + 1
)
select * from x;
1、extract函数:用于从时间中提取特定部分,如年月日时分秒,语法:extract(field from source) ;
field:YEAR、MONTH、DAY、HOUR、MINUTE、SECOND等
source:日期或时间值,列名、表达式、常量;
2、connect by:树形查询关键词,此处用于生成数字序列结果集;
3、level:此处用于限制查询结果的行数,这里可以换成rownum,区别在于level用于树形查询的节点,若有相同层级时level相同,rownum用于普通查询,不会出现重复值。