ORACLE時間函數(SYSDATE)深入理解


加法 
SELECT SYSDATE,ADD_MONTHS(SYSDATE,12) FROM DUAL; --加1年 
SELECT SYSDATE,ADD_MONTHS(SYSDATE,1) FROM DUAL; --加1月 
SELECT SYSDATE,TO_CHAR(SYSDATE+7,'yyyy-mm-dd HH24:MI:SS') FROM DUAL; --加1星期 
SELECT SYSDATE,TO_CHAR(SYSDATE+1,'yyyy-mm-dd HH24:MI:SS') FROM DUAL; --加1天 
SELECT SYSDATE,TO_CHAR(SYSDATE+1/24,'yyyy-mm-dd HH24:MI:SS') FROM DUAL; --加1小時 
SELECT SYSDATE,TO_CHAR(SYSDATE+1/24/60,'yyyy-mm-dd HH24:MI:SS') FROM DUAL; --加1分鍾 
SELECT SYSDATE,TO_CHAR(SYSDATE+1/24/60/60,'yyyy-mm-dd HH24:MI:SS') FROM DUAL; --加1秒 

減法 
SELECT SYSDATE,ADD_MONTHS(SYSDATE,-12) FROM DUAL; --減1年 
SELECT SYSDATE,ADD_MONTHS(SYSDATE,-1) FROM DUAL; --減1月 
SELECT SYSDATE,TO_CHAR(SYSDATE-7,'yyyy-mm-dd HH24:MI:SS') FROM DUAL; --減1星期 
SELECT SYSDATE,TO_CHAR(SYSDATE-1,'yyyy-mm-dd HH24:MI:SS') FROM DUAL; --減1天 
SELECT SYSDATE,TO_CHAR(SYSDATE-1/24,'yyyy-mm-dd HH24:MI:SS') FROM DUAL; --減1小時 
SELECT SYSDATE,TO_CHAR(SYSDATE-1/24/60,'yyyy-mm-dd HH24:MI:SS') FROM DUAL; --減1分鍾 
SELECT SYSDATE,TO_CHAR(SYSDATE-1/24/60/60,'yyyy-mm-dd HH24:MI:SS') FROM DUAL; --減1秒 

ORACLE時間函數:SYSDATE簡析

1.獲得當前日期是本月第幾周:

1 SELECT TO_CHAR(SYSDATE,'YYYYMMDD W HH24:MI:SS') FROM DUAL; 
2 
3 SELECT TO_CHAR(SYSDATE,'W') FROM DUAL;

 

2:取得當前日期是一個星期中的第幾天,注意星期日是第一天 
SQL> SELECT SYSDATE,TO_CHAR(SYSDATE,'D') FROM DUAL; 
SYSDATE T 
--------- - 
27-MAR-03 5 
  類似: 
SELECT TO_CHAR(SYSDATE,'yyyy') FROM DUAL; --
SELECT TO_CHAR(SYSDATE,'Q' FROM DUAL; --
SELECT TO_CHAR(SYSDATE,'mm') FROM DUAL; --
SELECT TO_CHAR(SYSDATE,'dd') FROM DUAL; --
DDD 年中的第幾天 
WW 年中的第幾個星期 
W 該月中第幾個星期 
D 周中的星期幾 
HH 小時(12) 
HH24 小時(24) 
MI 分 
SS 秒 
3:取當前日期是星期幾中文顯示: 
SQL> SELECT TO_CHAR(SYSDATE,'day') FROM DUAL; 
TO_CHAR(SYSDATE,'DAY') 
---------------------- 

星期四 
4:如果一個表在一個DATE類型的字段上面建立了索引,如何使用 
ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS' 

5: 得到當前的日期 
SELECT SYSDATE FROM DUAL; 
6: 得到當天凌晨0點0分0秒的日期 
SELECT TRUNC(SYSDATE) FROM DUAL; 
-- 得到這天的最后一秒 
SELECT TRUNC(SYSDATE) + 0.99999 FROM DUAL; 
-- 得到小時的具體數值 
SELECT TRUNC(SYSDATE) + 1/24 FROM DUAL; 
SELECT TRUNC(SYSDATE) + 7/24 FROM DUAL; 
7.得到明天凌晨0點0分0秒的日期 
SELECT TRUNC(SYSDATE+1) FROM DUAL; 
SELECT TRUNC(SYSDATE)+1 FROM DUAL; 
8: 本月一日的日期 
SELECT TRUNC(SYSDATE,'mm') FROM DUAL; 
9:得到下月一日的日期 
SELECT TRUNC(ADD_MONTHS(SYSDATE,1),'mm') FROM DUAL; 

10:返回當前月的最后一天? 
SELECT LAST_DAY(SYSDATE) FROM DUAL; 
SELECT LAST_DAY(TRUNC(SYSDATE)) FROM DUAL; 
SELECT TRUNC(LAST_DAY(SYSDATE)) FROM DUAL; 
SELECT TRUNC(ADD_MONTHS(SYSDATE,1),'mm') - 1 FROM DUAL; 
11: 得到一年的每一天 
SELECT TRUNC(SYSDATE,'yyyy')+ RN -1 DATE0 
FROM 
(SELECT ROWNUM RN FROM ALL_OBJECTS 
WHERE ROWNUM<366); 
12:今天是今年的第N天 
SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL; 
13:如何在給現有的日期加上2年 
SELECT ADD_MONTHS(SYSDATE,24) FROM DUAL; 
14:判斷某一日子所在年分是否為潤年 
SELECT DECODE(TO_CHAR(LAST_DAY(TRUNC(SYSDATE,'y')+31),'dd'),'29','閏年','平年') FROM DUAL; 
15:判斷兩年后是否為潤年 
SELECT DECODE(TO_CHAR(LAST_DAY(TRUNC(ADD_MONTHS(SYSDATE,24),'y')+31),'dd'),'29','閏年','平年') FROM DUAL; 
16:得到日期的季度 
SELECT CEIL(TO_NUMBER(TO_CHAR(SYSDATE,'mm'))/3) FROM DUAL; 
SELECT TO_CHAR(SYSDATE, 'Q') FROM DUAL;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM