在 oracle 的所有型別中,和日期時間有關的型別只有乙個: date,字面上看,是日期型別,其實它是包括時間的,確切的說應該是datetime.我們從以下幾方面來了解一下date的相關知識:
第一.date型別的組成
不管你同意與否,date型別總是包括時間的.如果沒有指定時間,就預設為午夜12:00:00
例如:sql> conn hr/hr
已連線。
sql> create table t
2 (d date)
3 tablespace users;
表已建立。
sql> insert into t values (to_date('2006-11-15','yyyy-mm-dd'));
已建立 1 行。
sql> select * from t;
d----------
15-11月-06
之所以顯示成 "15-11月-06"這種格式,與oracle的引數nls_date_format有關係,執行以下的命令:
sql>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
會話已更改。
日期時間格式改變以後,再執行剛才的語句:
sql> select * from t;
d-------------------
2006-11-15 00:00:00
可以看出,日期中是含有時間的.並且是"00:00:00".
第二:date 的長度
date從西元前2023年1月1日到公元2023年12月31日,所以不用擔心日期會到期.
第三.date 的格式化顯示
在不同的應用的地方,date可能要求有不同的顯示格式.
如:yyyy年mm月dd日,還有先顯示月日,再顯示年的.
sql> select to_char(d, 'yyyy"年"mm"月"dd"日"') "日期" from t;
日期--------------
2023年11月15日
第四:忽略date中時間,主要用於日期的比較.
date中始終是含有時間的,但是有的時候,我們不需要時間,只需要日期,這時就需要忽略時間.
sql> insert into t values (sysdate);
已建立 1 行。
sql> select * from t;
d-------------------
2006-11-15 00:00:00
2006-11-15 23:03:55
sql> select trunc(d) from t;
trunc(d)
-------------------
2006-11-15 00:00:00
2006-11-15 00:00:00
不忽略時間時:
sql> select * from t where d<=to_date('2006-11-15','yyyy-mm-dd');
d-------------------
2006-11-15 00:00:00
忽略時間時:
sql> select * from t where trunc(d)<=to_date('2006-11-15','yyyy-mm-dd');
d-------------------
2006-11-15 00:00:00
2006-11-15 23:03:55
第五: date相關的運算
由於date的特殊性,它只能做一部分的運算.
如:只能做兩個date的減運算,乙個date和整形的加(減)運算.
sql> select (d-to_date('2006-11-15','yyyy-mm-dd'))*24 from t;
(d-to_date('2006-11-15','yyyy-mm-dd'))*24
-----------------------------------------
023.0652778
兩日期相減後得到的結果單位是天.上面的結果已換算成小時.
sql> select d+1 from t;
d+1-------------------
2006-11-16 00:00:00
2006-11-16 23:03:55
sql> select d+32 from t;
d+32
-------------------
2006-12-17 00:00:00
2006-12-17 23:03:55
加或減去一段時間後,會自動的換算到別的日期.
sql> select d-46 from t;
d-46
-------------------
2006-09-30 00:00:00
2006-09-30 23:03:55
最後,sql> truncate table t;
表已截掉。
sql> drop table t;
表已丟棄。
ORACLE中date型別的使用
本文 csdn,作者 itwit 2015 4 2 對於很多人來說,oracle中的時間處理,向來是乙個很模糊的概念,我也是,記下來做參考。1.建立一張含日期型別的表 create table test user user id number 15 user name varchar2 30 sta...
Oracle中Date型別的處理
dual偽列 dual 是 oracle中的乙個實際存在的表,任何使用者均可讀取,常用在沒有目標表的select語句塊中。select sysdate from dualselect to char sysdate,yyyy mm dd from dual select to char sysdat...
ORACLE中date型別的使用
對於很多人來說,oracle中的時間處理,向來是乙個很模糊的概念,我也是,記下來做參考。1.建立一張含日期型別的表 create table test user user id number 15 user name varchar2 30 start date date,end date date...