ORACLE時間函式(SYSDATE)簡單理解
阿新 • • 發佈:2019-01-25
加法
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:取得當前日期是本月的第幾周
SQL> select to_char(sysdate,'YYYYMMDD W HH24:MI:SS') from dual;
TO_CHAR(SYSDATE,'YY
-------------------
20030327 4 18:16:09
SQL> select to_char(sysdate,'W') from dual;
T
-
4
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 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:取得當前日期是本月的第幾周
SQL> select to_char(sysdate,'YYYYMMDD W HH24:MI:SS') from dual;
TO_CHAR(SYSDATE,'YY
-------------------
20030327 4 18:16:09
SQL> select to_char(sysdate,'W') from dual;
T
-
4
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;
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SYSDATE | |
2 | --◎ 可得到目前系統的時間 |
3 | |
4 | ex. |
5 | select sysdate from dual; |
6 | |
7 | sysdate |
8 | ---------- |
9 | 20-SEP-07 |
10 | |
11 | 常用之日期格式 |
12 | |
13 | 日期格式 說明 |
14 | ------------------------------------------------------------------------ |
15 | YYYY/MM/DD -- 年/月/日 |
16 | YYYY -- 年(4位) |
17 | YYY -- 年(3位) |
18 | YY -- 年(2位) |
19 | MM -- 月份 |
20 | DD -- 日期 |
21 | D -- 星期 |
22 | -- 星期日 = 1 星期一 = 2 星期二 = 3 |
23 | -- 星期三 = 4 星期四 = 5 星期五 = 6 星期六 = 7 |
24 | |
25 | DDD -- 一年之第幾天 |
26 | WW -- 一年之第幾週 |
27 | W -- 一月之第幾週 |
28 | YYYY/MM/DD HH24:MI:SS -- 年/月/日 時(24小時制):分:秒 |
29 | YYYY/MM/DD HH:MI:SS -- 年/月/日 時(非24小時制):分:秒 |
30 | J -- Julian day,Bc 4712/01/01 為1 |
31 | RR/MM/DD -- 公元2000問題 |
32 | -- 00-49 = 下世紀;50-99 = 本世紀 |
33 | ex. |
34 | select to_char(sysdate,'YYYY/MM/DD') FROM DUAL; -- 2007/09/20 |
35 | select to_char(sysdate,'YYYY') FROM DUAL; -- 2007 |
36 | select to_char(sysdate,'YYY') FROM DUAL; -- 007 |
37 | select to_char(sysdate,'YY') FROM DUAL; -- 07 |
38 | select to_char(sysdate,'MM') FROM DUAL; -- 09 |
39 | select to_char(sysdate,'DD') FROM DUAL; -- 20 |
40 | select to_char(sysdate,'D') FROM DUAL; -- 5 |
41 | select to_char(sysdate,'DDD') FROM DUAL; -- 263 |
42 | select to_char(sysdate,'WW') FROM DUAL; -- 38 |
43 | select to_char(sysdate,'W') FROM DUAL; -- 3 |
44 | select to_char(sysdate,'YYYY/MM/DD HH24:MI:SS') FROM DUAL; -- 2007/09/20 15:24:13 |
45 | select to_char(sysdate,'YYYY/MM/DD HH:MI:SS') FROM DUAL; -- 2007/09/20 03:25:23 |
46 | select to_char(sysdate,'J') FROM DUAL; -- 2454364 |
47 | select to_char(sysdate,'RR/MM/DD') FROM DUAL; -- 07/09/20 |