Orecle 如何取系统时间的上个月的第一天0点和上个月最后一天的最后一秒

现有脚本是
date between
to__date('2017-10-01 00:00:00','yyyy/mm/dd hh24:mi:ss') and
to_date(2017-10-31 0:00:00','yyyy/mm/dd hh24:mi:ss'))
需要规避每个月日期不同 以及跨年的问题

希望通过sysdate 得到以上区间 sysdate 为以上地址区间的下个月的随机一天。

select
to_char(last_day(add_months(sysdate, -2))+1,'yyyy-MM-dd')||' 00:00:00' as 上一个月第一天0点
,to_char(last_day(add_months(sysdate, -1)),'yyyy-MM-dd')||' 23:59:59' as 上个月最后一天的最后一秒
from dual;