Oracle數據庫to_date()和to_char()的相關


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM