2010年7月27日 星期二

oracle 日期計算


1日期運算 
2 
31. 更改日期顯示的format 
4 ex. 
5 ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD';    
6 階段作業已被更改    
7           
8 select sysdate from dual;    
9           
10 SYSDATE    
11 ----------    
12 2007/09/20    
13           
14 --只對目前session有效,一個 connect 視為一個 session 
15 
162. 日期 + 數值 
17 ex. 
18 select sysdate + 10 from dual; 
19  
20 SYSDATE+10 
21 ---------- 
22 01-OCT-07  
23        
243. 日期 - 數值 
25 ex. 
26 select sysdate - 10 from dual; 
27 
28 SYSDATE-10 
29 ---------- 
30 11-SEP-07 
31 
324. 日期相減得到日期差 
33 ex. 
34 select sysdate - to_date('20070901','yyyymmdd') aa from dual; 
35  
36           AA 
37 ------------- 
38   20.4508218   
39  
40 --◎ 包含時間,所以有小數 
41 --◎ 可做日期欄位的計算 
42  
43 select trunc(sysdate - to_date('20070901','yyyymmdd')) aa from dual; 
44  
45        AA 
46 ---------- 
47        20 
48 --使用trunc取整數,得到日期 
49 
505. 日期相減得到小時差 
51 ex. 
52 select trunc((sysdate - to_date('20070901','yyyymmdd'))*24) aa from dual; 
53 
54         AA 
55 ---------- 
56        490 
57 
586. 日期相減得到分鐘差 
59 ex. 
60 select trunc((sysdate - to_date('20070901','yyyymmdd'))*24*60) aa from dual; 
61  
62       AA 
63 --------- 
64     29459 
65 
667. 日期相減得到秒數差 
67 ex. 
68 select trunc((sysdate - to_date('20070901','yyyymmdd'))*24*60*60) aa from dual; 
69 
70        AA 
71 ---------- 
72    1767606 
73 
748. 日期 + n小時 
75 ex. 
76 select to_char(sysdate,'YYYY/MM/DD HH24:MI:SS') aa from dual; 
77  
78 AA 
79 -------------------- 
80 2007/09/21 11:03:47  --系統時間 
81  
82 select to_char(sysdate+2/24,'YYYY/MM/DD HH24:MI:SS') aa from dual; 
83 
84 AA 
85 -------------------- 
86 2007/09/21 13:03:47  --加2小時(理論值) 
87 
889. 日期 + n分鐘  
89 ex. 
90 select to_char(sysdate+10/1440,'YYYY/MM/DD HH24:MI:SS') aa from dual; 
91 
92 AA 
93 -------------------- 
94 2007/09/21 11:13:47  --加10分鐘(理論值) 
95 
9610. 日期+ n秒鐘 
97 ex. 
98 select to_char(sysdate+10/86400,'YYYY/MM/DD HH24:MI:SS') aa from dual; 
99     
100 AA 
101 -------------------- 
102 2007/09/21 11:13:57  --加10秒鐘(理論值)