oracle时间处理

--当天0点 DATE格式 2016-11-28 00:00:00  
SELECT TRUNC(SYSDATE) FROM DUAL;

--当天最后24点之前 默认加时间为天 2016-11-28 23:59:59  
SELECT TRUNC(SYSDATE)+1-1/(24*60*60) FROM DUAL;

--本月第一天 2016-11-01 00:00:00  
SELECT TRUNC(SYSDATE,'MONTH') FROM DUAL;

--本月最后一天 2016-11-30 00:00:00  
SELECT TRUNC(LAST_DAY(SYSDATE)) FROM DUAL;

--本月最后一天 24点之前 2016-11-30 23:59:59  
SELECT ADD_MONTHS(TRUNC(SYSDATE,'MONTH'),1)-1/(24*60*60) FROM DUAL;

--本年第一天 2016-01-01 00:00:00  
SELECT TRUNC(SYSDATE,'YEAR') FROM DUAL;

--本年最后一天 2016-12-31 00:00:00  
SELECT ADD_MONTHS(TRUNC(SYSDATE,'YEAR'),12)-1 FROM DUAL;

--本年最后一天的午时 2016-12-31 23:59:59  
SELECT ADD_MONTHS(TRUNC(SYSDATE,'YEAR'),12)-1/(24*60*60) FROM DUAL;

--本季度第一天 2016-10-01 00:00:00  
SELECT TRUNC(SYSDATE,'Q') FROM DUAL;

--本季度最后一天 2016-12-31 00:00:00
SELECT ADD_MONTHS(TRUNC(SYSDATE,'Q'),3)-1 FROM DUAL;

--本季度最后一天午时 2016-12-31 23:59:59 
SELECT ADD_MONTHS(TRUNC(SYSDATE,'Q'),3)-1/(24*60*60) FROM DUAL;

--本周第一天 trunc D 截取本周第一天 2016-11-28 00:00:00
--SELECT TRUNC(SYSDATE,'D')+1 FROM DUAL;
--应该采用IW来取得时间 IW是ISO标准周,返回是的当前日期所在周的周一
SELECT TRUNC(SYSDATE,'IW') FROM DUAL;

--本周最后一天 2016-12-04 00:00:00
--SELECT TRUNC(SYSDATE,'D')+7 FROM DUAL;
--应该采用IW来取得时间 IW是ISO标准周,返回是的当前日期所在周的周一
SELECT TRUNC(SYSDATE,'IW')+6 FROM DUAL;

--本周最后一天的午时 2016-12-04 23:59:59
--SELECT TRUNC(SYSDATE,'D')+8-1/(24*60*60) FROM DUAL;
--应该采用IW取得时间,IW为所在周的周一 IW是ISO标准周,返回是的当前日期所在周的周一
SELECT TRUNC(SYSDATE,'IW')+7-1/(24*60*60) FROM DUAL;

原文地址:https://www.cnblogs.com/conan304/p/6110378.html