Oracle 的Date型別面面觀

2021-04-12 13:04:38 字數 2531 閱讀 7071

在 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...