`
Intrepid2012
  • 浏览: 70871 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle 获取本周、本月、本季、本年的第一天和最后一天

 
阅读更多

 

--取得当天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;

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics