像這樣查詢select * from BUDGET_LOGIN_LOG where OPTTIME BETWEEN '2015-06-15' and '2015-06-16 ';能得到正確的結果集
uj5u.com熱心網友回復:
字串的比較順序是先比較第一個字符,然后第二個,一次類推因此如果你的欄位格式嚴格依照特定格式(包括位數一致),就可以用字串直接比較
uj5u.com熱心網友回復:
看清楚標題啊
uj5u.com熱心網友回復:
你也看清楚我說的話。如果不是字符型別,何來格式?uj5u.com熱心網友回復:
你的意思是只要按照這個日期格式就可以比較啊
uj5u.com熱心網友回復:
只要日期格式固定,不管是yyyy-mm-dd 還是yyyymmdd 或是yyyy/mm/dd都可以直接拿來比較
uj5u.com熱心網友回復:
當然,謂詞后的引數格式要與欄位中的字串格式一致uj5u.com熱心網友回復:
你表中的欄位只要是VARCHAR2型別,不管存的是什么值,都是字符,字符和字符是可以比較大小的,再者看你的描述能得到正確的結果集,那不用說你表中OPTTIME欄位存的字串一定是“YYYY-MM-DD”格式的。uj5u.com熱心網友回復:
那是你運氣好 oracle本身會有隱式轉型 剛好轉的能匹配不要糾結這種問題 代碼里面是不推薦這種寫法的
uj5u.com熱心網友回復:
存在你這種情況應該是系統會話的日期格式剛好與你的一致。所以可以不用to_date去轉換;你用下面陳述句查一下就知道了。
select * from nls_session_parameters a where a.parameter='NLS_TIME_FORMAT' ;
uj5u.com熱心網友回復:
因為OPTTIME是varchar2型別,所以,可以直接比較,不需要進行什么型別轉換。如果要查2015年全年的資料,都可以用下面的比較方式。
OPTTIME BETWEEN '2015' and '2016'
uj5u.com熱心網友回復:
一段型別是varchar2型別的,where條件也是的,所以能進行比較uj5u.com熱心網友回復:
欄位。。手機回復的,錯別字了
uj5u.com熱心網友回復:
說到底就是字符的比較。在插入的時候統一好時間的格式,就可以比較了。沒有為什么可以比較,uj5u.com熱心網友回復:
你的資料具體上怎么存的?除了日期之外,還有時間嗎? 再看看有沒有多余的空格這些。uj5u.com熱心網友回復:
這個和日期沒關系,你定義的是varchar2,你以為它是日期,但是資料庫是根據定義的varchar2識別的它就會只認字串,而正好字串的比較規則類似于日期的符合規則.就是先比較第一個字符,若相同,則比較下一個,一直到不同為止.uj5u.com熱心網友回復:
oracle中的字串比較和java中字串的比較規則是一樣的。都是按照位數一個一個對應比較。所以在以一統一格式的日期下,是可以正常比較出大小的uj5u.com熱心網友回復:
其實并沒有做型別轉換。你定義的是varchar2,只不過賦予它的意義代表日期, 事實上并不是日期型別。
至于字串比較,樓上諸位已經分析的很透徹了。
你可以用兩種方式測驗并體會:
1、 BETWEEN '2015-07-15' and '2015-6-16 ' 看看誰大誰小
2、 BETWEEN date'2015-07-15' and date'2015-6-16 ' 再看誰大誰小
uj5u.com熱心網友回復:
頂!不要沉下去!uj5u.com熱心網友回復:
learninguj5u.com熱心網友回復:
看錯了 以為OPTTIME 是date型
uj5u.com熱心網友回復:
代碼里面是不推薦這種寫法的uj5u.com熱心網友回復:
日期型,varchar,數字型都是隱式轉換uj5u.com熱心網友回復:
還是轉換一下比較放心uj5u.com熱心網友回復:
字串本來就可以比較,不過是一對一的比uj5u.com熱心網友回復:
當做字符比較,本質上就是字符。uj5u.com熱心網友回復:
感謝分享,學習了!uj5u.com熱心網友回復:
因為你格式一樣,而且都是varchar2型別。字符當然可以比較了。uj5u.com熱心網友回復:
字串是可以比較的,會一個一個字符比較大小,如果日期串長度格式都是固定是可以得到想要的結果。uj5u.com熱心網友回復:
和java里的比較規則相似uj5u.com熱心網友回復:
因為OPTTIME是varchar2型別,所以,可以直接比較,不需要進行什么型別轉換。如果要查2015年全年的資料,都可以用下面的比較方式。OPTTIME BETWEEN '2015' and '2016'uj5u.com熱心網友回復:
字串的比較順序是先比較第一個字符,然后第二個,一次類推因此如果你的欄位格式嚴格依照特定格式(包括位數一致),就可以用字串直接比較
uj5u.com熱心網友回復:
學習了解一下
uj5u.com熱心網友回復:
你的欄位型別就是varchar2 型別為什么不能那樣查呢。轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/79250.html
標籤:開發
