Oracle時間型別

2021-09-30 07:26:20 字數 1658 閱讀 7246

sql> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';

會話已更改。

sql> select to_date('2006-05-01 19:25:34', 'yyyy-mm-dd hh24:mi:ss') from dual;

to_date('2006-05-01

-------------------

2006-05-01 19:25:34

sql> select to_date('2006-05-01 19:25', 'yyyy-mm-dd hh24:mi') from dual;

to_date('2006-05-01

-------------------

2006-05-01 19:25:00

sql> select to_date('2006-05-01 19', 'yyyy-mm-dd hh24') from dual;

to_date('2006-05-01

-------------------

2006-05-01 19:00:00

sql> select to_date('2006-05-01', 'yyyy-mm-dd') from dual;

to_date('2006-05-01

-------------------

2006-5-1

sql> select to_date('2006-05', 'yyyy-mm') from dual;

to_date('2006-05','

-------------------

2006-5-1

sql> select to_date('2006', 'yyyy') from dual;

to_date('2006','yyy

-------------------

2006-1-1

當省略hh、mi和ss對應的輸入引數時,oracle使用0作為default值。如果輸入的日期資料忽略時間部分,oracle會將時、分、秒部分都置為0,也就是說會取整到日。

同樣,忽略了dd引數,oracle會採用1作為日的預設值,也就是說會取整到月。

但是,不要被這種「慣性」所迷惑,如果忽略mm引數,oracle並不會取整到年,取整到當前月。

注意:1.在使用oracle的to_date函式來做日期轉換時,可能會直覺地採用「yyyy-mm-dd hh:mm:ss」的格式作為格式進行轉換,但是在oracle中會引起錯誤:「ora 01810 格式**出現兩次」。如:select to_date('2005-01-01 13:14:20','yyyy-mm-dd hh24:mm:ss') from dual;

原因是sql中不區分大小寫,mm和mm被認為是相同的格式**,所以oracle的sql採用了mi代替分鐘。select to_date('2005-01-01 13:14:20','yyyy-mm-dd hh24:mi:ss') from dual;

2.另要以24小時的形式顯示出來要用hh24

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;//mi是分鐘

select to_char(sysdate,'yyyy-mm-dd hh24:mm:ss') from dual;//mm會顯示月份

oracle 時間型別處理

oracle時間型別的查詢 oracle查詢日期可以使用 但是在等號的兩邊必須資料型別一致,比如 2010 9 19 這是乙個字串不能直接與日期型別字段比較必須要進行日期轉換 日期轉換成字串 to char date,yyyy mm dd 2009 09 19 字串轉成日期 to date 2009...

ORACLE時間型別字段加減簡便運算

例子 年份運算 當前時間 2年 select sysdate 1 interval 2 year 9 as year operation from dual 月份運算 當前時間 2個月 select sysdate 1 interval 2 month 9 as month operation fr...

Oracle時間型別資料為0的Bug

開發組在資料遷移時,報告發現一些數值為 0000 00 00 的date資料,導致資料遷移失敗。這個問題有點奇怪,因為在oracle 中,date型別的資料的取值範圍是從 4712 12 31到9999 12 31之間,並且年份不能為0。也就是說 0000 00 00 是乙個非法資料,不為oracl...