dual伪列:
dual 是 Oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的select语句块中。
sysdate 为获取系统时间
select sysdate from dual
格式化 系统时间 并转换为String类型
select to_char(sysdate, 'yyyy-MM-dd') from dual
select to_char(sysdate, 'YYYY/MM/DD HH24:MI:SS') from dual
格式化 系统时间 并转换为Date类型
select to_date(sysdate, 'yyyy-MM-dd') from dual
select to_date(sysdate, 'YY/MM/DD HH:MI:SS') from dual
日期的增减
-- 当前日期增加7天
select sysdate + interval '7' day from dual
-- 当前日期减去10小时
select sysdate - interval '10' hour from dual
-- 当前日期减去5分钟
select sysdate - interval '5' MINUTE from dual
-- 当前日期加上1年
select sysdate + interval '1' year from dual
-- 也可以使用add_months方法
-- 当前日期增加4个月
select add_months(sysdate,4) from dual
实际情况
日期为Number类型的时候例如:testtime : 20190722
你希望跟当前时间作比较
-- 判断testtime增加10个月和当前日期比较大小
select distinct * from table
where to_date(to_char(sysdate,'yyyy-MM-dd'), 'yyyy-MM-dd')
<= (select add_months(to_date(to_char(testtime), 'yyyymmdd'),10) from dual)
-- 跟系统时间比较大小
select distinct * from table
where to_char(add_months(to_date(sxrq, 'YYYYMMDD'), pxn * 12 + pxy),'YYYYMMDD') >= to_char(to_date(sysdate),'YYYYMMDD' )
AND to_char(to_date(pjrq, 'YYYYMMDD'), 'YYYYMMDD')<=to_char(to_date(sysdate),'YYYYMMDD' )