获取本月第一天
select trunc(sysdate, 'mm') from dual;--trunc格式化时分秒
获取当前时间N年前或N年后
select to_char(sysdate, 'yyyy') +N from dual;
同理获取当前时间N天前或N天后
select to_char(sysdate, 'dd') +N from dual;--注意一个月最多31天
同理获取当前时间N个月前或N个月后
select to_char(sysdate, 'mm') +N from dual;--注意一年最多12个月
获取当前月份最后一天
select to_char(last_day(sysdate), 'mm-dd') from dual;--如果想要年份,也可以加上yyyy
最后如果说碰到不好获取的时间,我一般就是拆开来获取,然后拼接起来即可,注意oracle里查询语句的拼接使用的||,
例如我要获取当前时间的十年后的当月最后一天,例如今天是2019-07-17,我要获取2029-07-31这一天,那么我可以先取到当前年份的十年后,
当前月份的最后一天,然后拼接起来即可获得想要的数据
select to_date(to_char(sysdate, 'yyyy') +10||'-'||to_char(last_day(sysdate), 'mm-dd'),'yyyy-mm-dd') from dual;
这里to_date和to_char以及trunc都可以根据具体情况添加