環境: create table rq (xm varchar2(10),age number,zw varchar(10),rzrq date);insert into rq values ('小崔',23,'運維工程師',(to_date('2017-07-02','yyyy-mm-dd'))) ...
環境:
create table rq (xm varchar2(10),age number,zw varchar(10),rzrq date);
insert into rq values ('小崔',23,'運維工程師',(to_date('2017-07-02','yyyy-mm-dd')));
insert into rq values ('小趙',29,'java工程師',(to_date('2013-04-12','yyyy-mm-dd')));
insert into rq values ('小白',24,'網路工程師',(to_date('2016-10-02','yyyy-mm-dd')));
insert into rq values ('小虎',43,'項目管理師',(to_date('2003-09-15','yyyy-mm-dd')));
insert into rq values ('小葉',2,'技術工程師',(to_date('2009-07-02','yyyy-mm-dd')));
select * from rq
日期+數字=日期,表示若幹天之後的日期。
select a.*,rzrq +10 from rq a
加法
select a.*,add_months(rzrq,12) from rq a; --------加1年
select a.*,add_months(rzrq,1) from rq a; --加1月
select a.*,to_char(rzrq+7,'yyyy-mm-dd HH24:MI:SS') from rq a;---加1星期
select a.*,to_char(rzrq+1,'yyyy-mm-dd HH24:MI:SS') from rq a; --加1天
select a.*,to_char(rzrq+1/24,'yyyy-mm-dd HH24:MI:SS') from rq a; --加1小時
select a.*,to_char(rzrq+1/24/60,'yyyy-mm-dd HH24:MI:SS') from rq a; --加1分鐘
select a.*,to_char(rzrq+1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from rq a; --加1秒
日期-數字=日期,表示若幹天之前的日期。
select a.*,rzrq -10 from rq a
日期-日期=數字,表示兩個日期間的天數,但是肯定是大日期-小日期。
select a.*,trunc(sysdate - rzrq) from rq a
加法
select a.*,add_months(rzrq,-12) from rq a; --------加1年
select a.*,add_months(rzrq,-1) from rq a; --加1月
select a.*,to_char(rzrq-7,'yyyy-mm-dd HH24:MI:SS') from rq a;---加1星期
select a.*,to_char(rzrq-1,'yyyy-mm-dd HH24:MI:SS') from rq a; --加1天
select a.*,to_char(rzrq-1/24,'yyyy-mm-dd HH24:MI:SS') from rq a; --加1小時
select a.*,to_char(rzrq-1/24/60,'yyyy-mm-dd HH24:MI:SS') from rq a; --加1分鐘
select a.*,to_char(rzrq-1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from rq a; --加1秒
求出每個員工到今天為止的雇佣月份
select a.*,trunc(months_between(sysdate,rzrq)) from rq a
查詢出5年前受雇佣的員工信息:
select * from rq where trunc(months_between(sysdate,rzrq))/5 >12
註意:在開發中,如果是日期函數,建議用此語句,可以避免閏年的問題。
獲取當前日期及本月第幾周:
select '當前系統日期:'||to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'本月第'||to_char(sysdate,'w')||'周' from rq
獲取當前日期是一個星期中的第幾天:
註意:星期日是第一天
日期是星期幾中文顯示::
select '當前系統日期:'||to_char(sysdate),'本周'||to_char(sysdate,'day') from rq
解釋:
yyyy 年
q 季度
mm 月
dd 日
ddd 年中的第幾天
WW 年中的第幾個星期
W 該月中第幾個星期
D 周中的星期幾
hh 小時(12)
hh24 小時(24)
Mi 分
ss 秒
查看當前系統日期:
select a.*,sysdate from rq a
獲取當天凌晨0點0分0秒的日期
select trunc(sysdate) from rq;
獲取這天的最後一秒
select trunc(sysdate) + 0.99999 from rq;
獲取小時的具體數值
select trunc(sysdate) + 1/24 from rq;
select trunc(sysdate) + 7/24 from rq;
獲取明天凌晨0點0分0秒的日期
select trunc(sysdate+1) from rq;
select trunc(sysdate)+1 from rq;
獲取本月一日的日期
select trunc(sysdate,'mm') from rq;
獲取下月一日的日期
select trunc(add_months(sysdate,1),'mm') from rq;
返回當前月的最後一天
select last_day(sysdate) from rq;
select last_day(trunc(sysdate)) from rql;
select trunc(last_day(sysdate)) from rq;
select trunc(add_months(sysdate,1),'mm') - 1 from rq;
獲取一年的每一天
select trunc(sysdate,'yyyy')+ rn -1 date0 from (select rownum rn from all_objects where rownum<366);
獲取今天是今年的第N天
select to_char(sysdate,'ddd') from dual;
如何在給現有的日期加上2年
select add_months(sysdate,24) from dual;
判斷某一日子所在年分是否為潤年
select decode(to_char(last_day(trunc(sysdate,'y')+31),'dd'),'29','閏年','平年') from dual;
判斷兩年後是否為潤年
select decode(to_char(last_day(trunc(add_months(sysdate,24),'y')+31),'dd'),'29','閏年','平年') from dual;