TO DATE函式的小問題

2021-04-16 09:15:02 字數 1268 閱讀 2236

今天比較忙,總結乙個已經就發現的小問題。使用to_date函式的時候,小心不要被oracle的「慣性」騙了。

例子很簡單:

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-05-01 00:00:00

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

to_date('2006-05','

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

2006-05-01 00:00:00

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

to_date('2006','yyy

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

2006-05-01 00:00:00

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

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

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

Oracle中to date函式的問題

記錄乙個oracle中的坑,暫時還沒有解決 現有一條sql語句,如下結構 select from table where datetype 1 and to date filed,yyyy mm dd 2018 2 6 當where條件裡使用了to date 函式,那麼這個函式查詢的值會從整個表中 ...

to date 函式的使用

to date 函式的使用 今天碰到了to date函式,在網上發現一篇寫的不錯的。摘來一起用 sql alter session set nls date format yyyy mm dd hh24 mi ss 會話已更改。sql select to date 2006 05 01 19 25 ...

DATEDIFF函式小問題

declare cmdtext varchar 8000 declare userindex int set cmdtext set userindex 0 while userindex 30beginif userindex 29 select cmdtext cmdtext select co...