時間數據
1. 插入時間數據
- 插入語法
命令:insert into floor values (to_date('年-月-日 時:分:秒','YYYY-MM-DD HH24:MI:SS'));
</br>
- 完整的時間插入
insert into floor values (to_date('2010-07-12 09:10:12','YYYY-MM-DD HH24:MI:SS'));
查詢顯示:2010-07-12 09:10:12.0
</br>
- 缺少秒
insert into floor values (to_date('2010-07-12 09:10','YYYY-MM-DD HH24:MI'));
查詢顯示:2010-07-12 09:10:00.0
</br>
- 缺少分
insert into floor values (to_date('2010-07-12 09','YYYY-MM-DD HH24'));
查詢顯示:2010-07-12 09:00:00.0
</br>
- <font color='red'>當省略了HH、MI、SS 對應的參數時,oracle會使用0作為其默認值。即取整到當前日。</font>
insert into floor values (to_date('2010-07-12','YYYY-MM-DD'));
查詢顯示:2010-07-12 00:00:00.0
</br>
- <font color='red'>如果輸入的時間忽略 日DD ,oracle會 01 作為日的默認值,即取整到月。</font>
insert into floor values (to_date('2010-07','YYYY-MM'));
顯示時間:2010-07-01 00:00:00.0
</br>
- <font color='red'>如果輸入的時間忽略 月MM,oracle不會取整到年,而是取整到當前月。</font>
insert into floor values (to_date('2010','YYYY'));
查詢顯示:2010-06-01 00:00:00.0
</br>
2、特殊時間處理
- 時間查詢延遲
</br>
- 在系統的時間基礎上延遲五秒
sysdate+(5/24/60/60);
</br>
- 在系統時間基礎上延遲五分鐘
sysdate+(5/24/60);
</br>
- 在系統的時間基礎上延遲五小時
sysdate+5/24;
</br>
- 在系統時間基礎上延遲五天
sysdate+5;
</br>
- 在系統時間基礎上延遲五月
add_months(sysdate,-5);
</br>
- 在系統時間基礎上延遲五年
add_months(sysdate,-5^12);
</br>
</br>
- 上月月末的時間
select last_day(add_months(sysdate,-1)) from tablename;
</br>
- 本月的最后一秒
select trunc(add_months(sysdate,1),'MM')-1/24/60/60 from dual;
</br>
- 本周星期一的日期
select trunc(sysdate,'day')+1 from dual;
</br>
- 年初,至今的天數
select ceil(sysdate-trunc(sysdate,'year')) from dual;
</br>
- 今天是今年的第幾周
select to_char(sysdate,'fmww') from dual;
</br>
- 今天是本月的第幾周
select to_char(sysdate,'ww')-to_char(trunc(sysdate,'MM'),'ww')+1 as 'weekOfMon' from dual;
</br>
- 當前月的天數
select to_char(last_day(sysdate,'dd'),days) from dual;
</br>
- 今年的天數
select * add_months(trunc(sysdate,'year'),12)-trunc(sysdate,'year') from dual;
</br>
- 下個星期一的日期
select next_day(sysdate,'monday') from dual;
</br>
- 判斷當前時間是上午下午還是晚上
select case
when to_number(to_char(sysdate,'hh24')) between 6 and 11 then '上午';
when to_number(to_char(sysdate,'hh24')) between 11 and 17 then '下午';
when to_number(to_char(sysdate,'hh24')) (between 17 and 23) and (between 0 and 6) then '晚上';
end
from dual;