您的位置:首页 > 数据库 > Oracle

Oracle -- 去年、今年、明年的表示

2018-02-10 09:00 330 查看
1.去年年初

select add_months(trunc(sysdate,'yyyy'),-12) firstLastYear from dual;
select to_char((trunc(sysdate,'yyyy')-1),'yyyymm')  from dual;
select to_char(add_months(trunc(sysdate,'yyyy'),-12),'yyyy-mm') from dual;



2.去年年底

select trunc(sysdate,'yyyy')-1 from dual;
3.明年年初

select add_months(trunc(sysdate,'yyyy'),12) nextYear from dual;


4.trunc类型时间格式(当年年初)
select trunc(sysdate,'YYYY') from dual;
5.char类型时间格式(当年年初)
select to_char(trunc(sysdate,'YYYY'),'yyyy/mm/dd') from dual;

6.当年上月最后一天

select to_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd') from dual;--上月的第一天
select to_char(add_months(sysdate,-1),'yyyy-MM-dd') preToDay from dual;--上月的今天
select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') lastDay from dual;--上月最后一天
7.取得当年的最近几年
select (to_number(to_char(sysdate,'yyyy'))-5+rownum) as year from ALL_OBJECTS where rownum < 13;--因为-5,所以会显示前几年
select (to_number(to_char(sysdate,'yyyy'))+rownum) as year from ALL_OBJECTS where rownum < 13;--当年,所以会显示当年以后的年份



8.取得2017年1月到2017年12月的所有月份,总共,根据这个就能推敲出其他的比如取详细日期列表,时间

select distinct (to_char(dMY, 'yyyy-mm')) dM
from (select add_months(to_date('2017-01-01', 'yyyy-mm-dd'), rownum - 1) dMY
from dual
connect by rownum <= to_date('2017-12-30', 'yyyy-mm-dd') - to_date('2017-01-01', 'yyyy-mm-dd') + 1)
9.时间的间隔显示,两个时间之间相差6个小时
select (level-1) levelInfo,sysdate-(level-1)/4 from dual connect by level<=35;

10.某月中周五的具体日期

SELECT TO_CHAR(T.DAYS, 'YYYY-MM-DD') FRIDAY
FROM (SELECT TRUNC(SYSDATE, 'MM') + ROWNUM - 1 AS DAYS
FROM DBA_OBJECTS
WHERE ROWNUM < 32) T
WHERE TO_CHAR(T.DAYS, 'MM') = TO_CHAR(SYSDATE, 'MM')
AND TRIM(TO_CHAR(T.DAYS, 'DAY')) = '星期五'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: