?
--取得当天0时0分0秒 select TRUNC(SYSDATE) FROM dual; --取得当天23时59分59秒(在当天0时0分0秒的基础上加1天后再减1秒) SELECT TRUNC(SYSDATE)+1-1/86400 FROM dual; --取得当前日期是一个星期中的第几天,注意:星期日是第一天 select to_char(sysdate,'D'),to_char(sysdate,'DAY') from dual; --在oracle中如何得到当天月份的第一天和最后一天 select to_char(sysdate,'yyyy-mm')||'-01' firstday,to_char(last_day(sysdate),'yyyy-mm-dd') lastday from dual --实现当天16点前数据减去昨天16点的,过了16点减去今天16点 select field1, field2 from mytable where time = decode(sign(sysdate-trunc(sysdate)-16/24), --时间判断 -1,trunc(sysdate)-1+16/24, --小于16点取昨天16点 trunc(sysdate)+16/24) --大于16点取当天16点
?
--本周
select trunc(sysdate, 'd') + 1 from dual;
select trunc(sysdate, 'd') + 7 from dual;
--本月
select trunc(sysdate, 'mm') from dual;
select last_day(trunc(sysdate)) from dual;
--本季
select trunc(sysdate, 'Q') from dual;
select add_months(trunc(sysdate, 'Q'), 3) - 1 from dual;
--本年
select trunc(sysdate, 'yyyy') from dual;
select add_months(trunc(sysdate, 'yyyy'), 12) - 1 from dual;
?
?
-- 获取上月的开始时间和结束时间
select to_char(to_date(to_char(add_months(sysdate, -1), 'yyyy-mm'),'yyyy-mm'),'yyyy-mm-dd hh24:mi:ss')
? from dual;
select to_char(to_date(to_char(sysdate, 'yyyy-mm'), 'yyyy-mm'),'yyyy-mm-dd hh24:mi:ss')
? from dual;
-- 获取前一天的开始时间和结束时间
select to_char(to_date(to_char(sysdate - 1, 'yyyy-mm-dd'), 'yyyy-mm-dd'),'yyyy-mm-dd hh24:mi:ss')
? from dual;
select to_char(to_date(to_char(sysdate, 'yyyy-mm-dd'), 'yyyy-mm-dd'),'yyyy-mm-dd hh24:mi:ss')
? from dual;
-- 获取上一个小时的开始时间和结束时间
select to_date(to_char(sysdate, 'yyyy-mm-dd') || (to_char(sysdate, 'hh24') - 1),'yyyy-mm-dd hh24')
? from dual;
select to_date(to_char(sysdate, 'yyyy-mm-dd') || (to_char(sysdate, 'hh24')),'yyyy-mm-dd hh24')
? from dual;