可愛(ài)的琪琪,開(kāi)心快樂(lè)每一天
          溫馨小屋
          可愛(ài)的琪琪,開(kāi)心快樂(lè)每一天
          posts - 7,comments - 39,trackbacks - 0

          ? 思路是先將oracle中時(shí)間字段轉(zhuǎn)化成字段串,然后與字符串模糊查詢
          如下:
          select * from atm1_operatelog t where to_char(t.operatetime,'yyyy-MM-dd') like '2006-10-16'

          同時(shí)反過(guò)來(lái)也是一樣可行的
          select * from atm1_operatelog t where t.operatetime like to_date('2006-10-16','yyyy-MM-dd')
          將字段串轉(zhuǎn)化為時(shí)間然后使用like關(guān)鍵字

          posted on 2006-10-17 15:45 陳琪 閱讀(4907) 評(píng)論(8)  編輯  收藏

          FeedBack:
          # re: oracle時(shí)間模糊查詢
          2006-10-17 23:50 | someone
          在where子句中使用數(shù)據(jù)庫(kù)函數(shù),會(huì)導(dǎo)致索引無(wú)法使用。
          而且在sql里面用上數(shù)據(jù)庫(kù)特定函數(shù)的話,對(duì)移植性也有影響。

          個(gè)人認(rèn)為日期模糊查詢較好的做法是使用JDBC的PreparedStatement,sql寫標(biāo)準(zhǔn)sql(與數(shù)據(jù)庫(kù)無(wú)關(guān)),日期值用? 然后代碼里面將日期的范圍值set進(jìn)去,把日期處理交給JDBC來(lái)做。

          如上面例子 select * from atm1_operatelog t where t.operatetime < ? and t.operatetime > ?

          代碼里面 PreparedStatement.setDate(1,date1);
          PreparedStatement.setDate(2,date2);
            回復(fù)  更多評(píng)論
            
          # re: oracle時(shí)間模糊查詢
          2006-10-18 08:46 | 陳琪
          你的意見(jiàn)是正確的,
          問(wèn)題是該如何實(shí)現(xiàn)呢?能給個(gè)具體的例子么?
          你的想法我也考慮過(guò),但是沒(méi)找到好的實(shí)現(xiàn)方法。
          你給個(gè)例子吧,讓大家都學(xué)習(xí)學(xué)習(xí)
          @someone
            回復(fù)  更多評(píng)論
            
          # re: oracle時(shí)間模糊查詢
          2006-10-18 09:19 | someone
          //get connection
          Connection con = xx;
          String sql = "select * from atm1_operatelog t where t.operatetime < ? and t.operatetime > ?";
          PreparedStatement p = con.preparedStatement(sql);
          DateFormat formater= new SimpleDateFormat("yyyy-MM-dd");
          //2006-10-16 means days before 2006-10-17 and after 2006-10-15
          p.setDate(1,formater.parse("2006-10-17"));
          p.setDate(2,formater.parse("2006-10-16"));
          ResultSet result = p.executeQuery() ;
          //process ResultSet
          ........
            回復(fù)  更多評(píng)論
            
          # re: oracle時(shí)間模糊查詢
          2006-10-18 14:30 | 123bingbing
          增開(kāi)7群,號(hào)碼 30440732
          8群 30756649
          9群 30178567
          10群 28694497

          我們的qq群:15096318 學(xué)習(xí)程序的都可以來(lái)  回復(fù)  更多評(píng)論
            
          # re: oracle時(shí)間模糊查詢
          2006-10-18 18:01 | 有貓相伴的日子
          使用like效率很低沒(méi)必要這么轉(zhuǎn)吧!!!!!等于運(yùn)算就可以了  回復(fù)  更多評(píng)論
            
          # re: oracle時(shí)間模糊查詢
          2006-10-19 09:00 | 陳琪
          someone,你的意思我明白了。
          p.setDate(1,formater.parse("2006-10-17"));
          p.setDate(2,formater.parse("2006-10-16"));
          思維不錯(cuò),受教了。
          @someone
          @123bingbing
          @有貓相伴的日子

          使用like效率確實(shí)很低。不過(guò)很多時(shí)候模糊查詢需要用到它  回復(fù)  更多評(píng)論
            
          # re: oracle時(shí)間模糊查詢
          2006-11-01 15:24 | zhousir
          利用to_char來(lái)轉(zhuǎn)化成字符形式是可行的,至于效率問(wèn)題,可以創(chuàng)建函數(shù)索引--基于to_char(時(shí)間字段),那樣可以非常快的查詢出結(jié)果~  回復(fù)  更多評(píng)論
            
          # re: oracle時(shí)間模糊查詢
          2008-12-30 13:15 | 北京時(shí)間
          使用like效率確實(shí)很低  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 宣城市| 建昌县| 龙门县| 库车县| 都江堰市| 丽江市| 岳普湖县| 伊金霍洛旗| 乌鲁木齐市| 浮梁县| 东阿县| 荆门市| 雷州市| 佛冈县| 万山特区| 白沙| 莎车县| 遂宁市| 绵竹市| 长宁县| 资中县| 德化县| 金坛市| 米林县| 宁明县| 东辽县| 裕民县| 漯河市| 茂名市| 通化县| 罗定市| 策勒县| 英山县| 柯坪县| 磴口县| 齐河县| 嵩明县| 特克斯县| 儋州市| 小金县| 叙永县|