select * from T_A a where a.begintime=to_date('2013-1-1','yyyy-mm-dd');
和
select * from T_A a where to_char(a.begintime,'yyyy-mm-dd')='2013-1-1';
查詢結果是一樣的.
區別在於 查詢的 處理步驟不一樣.
select * from T_A a where a.begintime=to_date('2013-1-1','yyyy-mm-dd');
是先把 '2013-1-1' 這個字符串, 轉換為日期格式, 然后去和數據庫里面做比較.
如果有 1000 行數據, 那么操作就是
1次 字符轉換為 日期, 1000 次日期比較。
select * from T_A a where to_char(a.begintime,'yyyy-mm-dd')='2013-1-1';
是把數據庫里面的每一行的 begintime, 轉換為 字符格式, 然后去和數據庫里面做比較。
如果有 1000 行數據, 那么操作就是
1000次 日期轉換為字符, 1000 次字符串比較。
追問
那第二種一般用在什么情況下啊,貌似很影響程序的性能啊
追答
所以 一般不推薦用 第二種 方法啊.
追問
它總有存在的道理吧,一般會因為什么這么用呢
轉自:https://zhidao.baidu.com/question/528644264.html
