oracle 日期常用函數 (ADD_MONTHS,LAST_DAY,NEXT_DAY,MONTHS_BETWEEN,NEW_TIME,ROUND,TRUNC)
oracle 日期常用函數 (ADD_MONTHS,LAST_DAY,NEXT_DAY,MONTHS_BETWEEN,NEW_TIME,ROUND,TRUNC)
http://blog.blueshop.com.tw/pili9141/articles/52505.aspx
| 1 | 日期運算函數 |
| 2 | |
| 3 | ADD_MONTHS(d,n) |
| 4 | --時間點d再加上n個月 |
| 5 | |
| 6 | ex. |
| 7 | select sysdate, add_months(sysdate,2) aa from dual; |
| 8 | |
| 9 | SYSDATE AA |
| 10 | ---------- ---------- |
| 11 | 21-SEP-07 21-NOV-07 |
| 12 | |
| 13 | LAST_DAY(d) |
| 14 | --時間點d當月份最後一天 |
| 15 | |
| 16 | ex. |
| 17 | select sysdate, LAST_DAY(sysdate) LAST_DAY from dual; |
| 18 | |
| 19 | SYSDATE LAST_DAY |
| 20 | ---------- --------- |
| 21 | 21-SEP-07 30-SEP-07 |
| 22 | |
| 23 | NEXT_DAY(d,number) |
| 24 | --◎ 時間點d開始,下一個星期幾的日期 |
| 25 | --◎ 星期日 = 1 星期一 = 2 星期二 = 3 |
| 26 | -- 星期三 = 4 星期四 = 5 星期五 = 6 星期六 = 7 |
| 27 | |
| 28 | ex. |
| 29 | select sysdate, NEXT_DAY(sysdate,2) aa from dual; |
| 30 | |
| 31 | SYSDATE AA |
| 32 | ---------- ---------- |
| 33 | 21-SEP-07 24-SEP-07 |
| 34 | |
| 35 | MONTHS_BETWEEN(d1,d2) |
| 36 | --計算d1與d2相隔的月數 |
| 37 | |
| 38 | ex. |
| 39 | select trunc(MONTHS_BETWEEN(to_date('20071101','yyyymmdd'), |
| 40 | to_date('20070820','yyyymmdd'))) aa |
| 41 | from dual; |
| 42 | |
| 43 | AA |
| 44 | ---------- |
| 45 | 2 |
| 46 | |
| 47 | NEW_TIME(d,c1,c2) |
| 48 | --轉換新時區 |
| 49 | |
| 50 | ex. |
| 51 | select to_char(sysdate,'YYYY/MM/DD HH24:MI:SS') 台北, |
| 52 | to_char(NEW_TIME(sysdate,'EST','GMT'),'YYYY/MM/DD HH24:MI:SS') 格林威治 |
| 53 | from dual; |
| 54 | |
| 55 | 台北 格林威治 |
| 56 | -------------------- ------------------- |
| 57 | 2007/09/21 14:36:53 2007/09/21 19:36:53 |
| 58 | |
| 59 | ROUND(d[,fmt]) |
| 60 | --◎ 對日期作四捨五入運算 |
| 61 | --◎ 月的四捨五入以每月的15號為基準 |
| 62 | --◎ 年的四捨五入以每年6月為基準 |
| 63 | |
| 64 | ex. |
| 65 | select sysdate, ROUND(sysdate,'year') aa from dual; |
| 66 | |
| 67 | SYSDATE AA |
| 68 | ---------- ---------- |
| 69 | 21-SEP-07 01-JAN-08 |
| 70 | |
| 71 | select sysdate, ROUND(sysdate,'month') aa from dual; |
| 72 | |
| 73 | SYSDATE AA |
| 74 | ---------- ---------- |
| 75 | 21-SEP-07 01-OCT-07 |
| 76 | |
| 77 | TRUNC(d[,fmt]) |
| 78 | --對日期作擷取運算 |
| 79 | |
| 80 | ex. |
| 81 | select sysdate, TRUNC(sysdate,'year') aa from dual; |
| 82 | |
| 83 | SYSDATE AA |
| 84 | ---------- ---------- |
| 85 | 21-SEP-07 01-JAN-07 |
| 86 | |
| 87 | select sysdate, TRUNC(sysdate,'month') aa from dual; |
| 88 | |
| 89 | SYSDATE AA |
| 90 | ---------- ---------- |
| 91 | 21-SEP-07 01-SEP-07 |
浙公网安备 33010602011771号