oracle中的單行函式(三)
oracle中的單行函式(三)
Oracle預設的時間呈現格式是:DD-MON-YYOracle儲存時間的範圍是:January 1, 4712 B.C. to December31, 9999 AD。實際上使用數值的格式來儲存的,所以使用者可以對時間進行運算操作。
MONTHS_BETWEEN(d1, d2),計算d1與d2的月份差。返回的月份是帶小數點的,可以使用trunc或者round得到
需要的值。
SQL> select title,trunc(months_between(orderdate,pubdate),0) "Month"
2 from books join orderitems using (isbn)
3 join orders using(order#)
4 where order#=1004;
TITLE Month
------------------------------ ----------
PAINLESS CHILD-REARING 56 //計算訂購日期與出版日期相差多少個月.
ADD_MONTHS(d, m) d表示開始計算的起始時間,M表示需要增加的月份的數.計算出增加m個月後的今天是什麼日期。
SQL> select add_months(sysdate,5) from dual;
ADD_MONTH
---------
26-JUL-12 //7個月以後的今天是2012-07-12.
NEXT_DAY(d, DAY),d表示的是開始計算起始的日期,day表示下一個星期的星期幾的日期。
SQL> select next_day(sysdate,1) from dual;
NEXT_DAY(
--------- //下一個週一是什麼日期。
04-MAR-12
SQL> select order#,orderdate,next_day(orderdate,2) "Should Shipdate"
2 from orders
3 where order#=1010;
ORDER# ORDERDATE Should Sh
---------- --------- --------- //訂貨以後下週週二必須發貨。
1010 03-APR-09 06-APR-09
LAST_DAY總是返回一個月的最後一天。
SQL> select last_day(sysdate) from dual;
LAST_DAY(
---------
29-FEB-12 //檢視本月的最後一天是什麼日期。可見2012年還是閏年。
SQL> select order#,orderdate,last_day(orderdate)
2 from orders
3 where order# in (1002,1003);
ORDER# ORDERDATE LAST_DAY(
---------- --------- ---------
1002 31-MAR-09 31-MAR-09
1003 01-APR-09 30-APR-09
很多人在輸入日期的時候,不適應oracle的預設的日期形式DD-MON-YY.oracle中的TO_DATE函式。可以讓運用程式開發員,指定符合使用者輸入習慣或者組織規範的日期格式。
TO_DATE('d', 'f')d表示輸入的日期,f表示指示oracle識別的日期格式。兩個時間引數都是字串,要用單引號括起來。
常用的日期格式有
MONTH:完整的月份拼寫,如果不足9個字元用空格補齊,比如APRIL.
MON:3個字元的月份縮寫,APR。
MM:2個數值表示的月份,比如 02.
RM:羅馬字元代表的月份,比如 IV。
D:數值表示的星期幾,4(週四).
DD:數值表示的一個月中的某一天,27(一個月中的第28天).
DDD:數值表示的一年中的某一天,300(一年中的第300天).
DAY:星期幾,如果不足9個字元用空格補齊,比如 WEDNESDAY.
DY:3個字元的星期幾的縮寫,WED。
YYYY:4個數值表示的年份,比如2012.
B.C. OR A.D.:表示是公元前還是公元,比如2012 A.D.
SQL> create table testdate (tdate date);
Table created.
SQL> insert into testdate values('01-MAR-12');
1 row created.
SQL> insert into testdate values('2012-03-01');
insert into testdate values('2012-03-01')
*
ERROR at line 1:
ORA-01861: literal does not match format string
不使用to_date函式就要按照oracle預設的日期格式來輸入。
SQL> insert into testdate values(to_date('2012-03-01','yyyy-mm-dd'));
1 row created. //輸入的日期格式不是預設的DD-MON-YY。
SQL> commit;
Commit complete.
SQL> select * from testdate;
TDATE
---------
01-MAR-12
01-MAR-12
使用to_date函式的時候,oracle還是按照他預設的日期格式來顯示輸出。但是輸入就不是預設的了。如果要插入的日期格式是ANSI 格式的日期 YYYY-MM-DD,可以使用date關鍵字.
SQL> insert into testdate values(date '2012-03-01');
1 row created.
round函式在日期函式中的運用,ROUND(d, u)。d代表的是日期資料,u表示四捨五入的單位(月份或者年份)。對於月份如果超過或者等於16號,計數到下一個月的1號。對於年份,如果超過或者等7月16號,計數到下一年的1月1號。
SQL> delete from testdate;
3 rows deleted.
插入下面的4條記錄。
insert into testdate values(date '2012-03-16');
insert into testdate values(date '2012-03-06');
insert into testdate values(date '2012-06-16');
insert into testdate values(date '2012-07-16');
SQL> select round(tdate,'year') from testdate;
ROUND(TDA
---------
01-JAN-12
01-JAN-12
01-JAN-12
01-JAN-13
對於年份的舍入,如果沒有超過7月16號,都被轉換成了日期對應年份的1月1號。
SQL> select round(tdate,'month') from testdate;
ROUND(TDA
---------
01-APR-12
01-MAR-12
01-JUL-12
01-AUG-12
對應月份的舍入,如果沒有超過該月的16號,都被轉換成了該月的1號。
SQL> select * from testdate;
TDATE
---------
16-MAR-12
06-MAR-12
16-JUN-12
16-JUL-12
當然表中實際儲存的資料是沒有被改動的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26110315/viewspace-717183/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE中的單行函式Oracle函式
- ORACLE中的單行函式 (2)Oracle函式
- oracle中的單行函式(二)Oracle函式
- oracle中的單行函式(一)Oracle函式
- ORACLE單行函式與多行函式之三:數值函式Oracle函式
- Oracle單行函式詳解Oracle函式
- ORACLE單行函式與多行函式之一Oracle函式
- Oracle中coalesce函式的簡單理解Oracle函式
- ORACLE單行函式與多行函式之二:字元函式示例Oracle函式字元
- ORACLE單行函式與多行函式之四:日期函式示例Oracle函式
- ORACLE單行函式與多行函式之六:通用函式示例Oracle函式
- ORACLE單行函式與多行函式之五:轉換函式示例Oracle函式
- ORACLE單行函式與多行函式之七:多行函式之分組函式示例Oracle函式
- 《卸甲筆記》-單行函式對比之三筆記函式
- 常見函式之單行函式函式
- Oracle 內建函式三Oracle函式
- Oracle行轉列的函式Oracle函式
- oracle中的decode(函式)Oracle函式
- Oracle 使用分析函式刪除表中的重複行Oracle函式
- SQL中的單記錄函式SQL函式
- Oracle行轉列函式Oracle函式
- ORACLE函式介紹第三篇 著名函式之聚合函式Oracle函式
- 三角函式形成簡單的波浪函式
- Oracle中Decode()函式的使用Oracle函式
- oracle中的chr()和ascii()函式OracleASCII函式
- Oracle中關於函式的使用Oracle函式
- oracle中的幾個hash函式Oracle函式
- 6、Oracle中的分組函式Oracle函式
- Oracle中自定義函式Oracle函式
- 【函式】Oracle中聚合函式rank()使用方法函式Oracle
- Oracle 中 replace函式和translate函式比較Oracle函式
- JavaScript中的立即執行函式JavaScript函式
- 在單獨執行緒中執行物件成員函式 (轉)執行緒物件函式
- PL/SQL單行函式和組函式詳解(轉)SQL函式
- oracle 與 mysql 中的函式總結OracleMySql函式
- ORACLE函式介紹第一篇 著名函式之單值函式Oracle函式
- ORACLE函式介紹第二篇 非著名函式之單值函式Oracle函式
- 工作中,Oracle常用函式Oracle函式