1、获取前一自然日:select to_char(TRUNC(to_date(20190101,'yyyy-mm-dd')-1),'yyyymmdd') from dual;
2、以下引用自:https://blog.csdn.net/wangchangpen62/article/details/46548893
–前一天的开始时刻
SELECT to_date(to_char(TRUNC(SYSDATE-1),’yyyy-mm-dd’) || ‘00:00:00’,’yyyy-mm-dd hh24:mi:ss’) FROM DUAL;
–前一天的最后时刻
SELECT to_date(to_char(TRUNC(SYSDATE-1),’yyyy-mm-dd’) || ‘23:59:59’,’yyyy-mm-dd hh24:mi:ss’) FROM DUAL;
–上个月第一天的最后时刻
select to_date(to_char(add_months(trunc(sysdate),-1),’yyyy-mm’) || ‘01 23:59:59’,’yyyy-mm-dd hh24:mi:ss’)from dual;
–上个月的第一天
SELECT to_date(to_char(TRUNC(SYSDATE-1),’yyyymm’) || ‘01’,’yyyy-mm-dd’) FROM DUAL;
–上个月第一天最开始的时刻
select to_date(to_char(add_months(trunc(sysdate),-1),’yyyy-mm’) || ‘01 00:00:00’,’yyyy-mm-dd hh24:mi:ss’) from dual;
–上个月最后一天
select to_char(last_day(add_months(sysdate,-1)),’yyyy-mm-dd’) from dual;
–上个月最后一天的时刻
select to_date(to_char(last_day(add_months(sysdate,-1)),’yyyy-mm-dd’) || ’ 23:59:59’,’yyyy-mm-dd hh24:mi:ss’) from dual;
另外还有一些获取星期的方法:
select to_char(sysdate,’d’) 每周第几天 ,
to_char(sysdate,’dd’) 每月第几天 ,
to_char(sysdate,’ddd’) 每年第几天 ,
to_char(sysdate,’ww’) 每年第几周 ,
to_char(sysdate,’mm’) 每年第几月 ,
to_char(sysdate,’q’) 每年第几季 ,
to_char(sysdate,’yyyy’) 年
from dual;
select to_char(sysdate,’YYYY”年”mm”月”dd”日”’)
from dual;
select to_char(sysdate,’YYYY/mm/dd hh24:mi:ss ssss’)
from dual;
获取指定月的最开始时间和最后的时间:
SELECT to_date(to_char(I_QUERY_DATE ||’01 00:00:00’),’yyyy-mm-dd hh24:mi:ss’) FROM dual;
select to_date(to_char(last_day(t.d)|| ’ 23:59:59’),’yyyy-mm-dd hh24:mi:ss’) from (select to_date(‘2015-05’,’yyyy-mm’) d from dual)t
通过月份获取01年到50年之间全部分月份和月初月末的日期:
select to_char(tt.d, ‘yyyy-MM’) interval_month,
to_char(tt.d, ‘MM’) month,
to_char(last_day(tt.d), ‘dd’) day,
tt.d interval_date,
last_day(tt.d) last_day
from (select ADD_MONTHS(zz.s, rownum - 1) d
from (select to_date(‘2001-01-01’, ‘yyyy-MM-dd’) s,
to_date(‘2050-01-01’, ‘yyyy-MM-dd’) e
from dual) zz,
(select * from user_objects)
where rownum <= MONTHS_BETWEEN(zz.e, zz.s) + 1) tt
3、以下引用自:https://blog.csdn.net/qq_30934019/article/details/80611489
select trunc(sysdate) from dual ;--2011-3-18 今天的日期为2011-3-18
select trunc(sysdate, 'mm') from dual ; --2011-3-1 返回当月第一天.
select trunc(sysdate,'yy') from dual; --2011-1-1 返回当年第一天
select trunc(sysdate,'dd') from dual; --2011-3-18 返回当前年月日
select trunc(sysdate,'yyyy') from dual; --2011-1-1 返回当年第一天
select add_months(to_date('2018-01-01','yyyy-mm-dd'),12)-1 from dual; -- 2018-12-31 返回当年第一天
select trunc(sysdate,'d') from dual ; --2011-3-13 (星期天)返回当前星期的第一天
select trunc(sysdate, 'hh') from dual ; --2011-3-18 14:00:00 当前时间为14:41
select trunc(sysdate, 'mi') from dual ; --2011-3-18 14:41:00 TRUNC()函数没有秒的精确
SELECT to_date('20180818','yyyymmdd')-to_date('20180727','yyyymmdd') FROM dual;