Oracle中取今天的數據,之前使用到where to_char(t.t_created_tm, 'YYYY-MM-DD')= to_char(SYSDATE, 'YYYY-MM-DD');
這種方式效率低下,而且對t.t_created_tm即使建了索引,但是因爲對他進行了函數封裝後比較,查詢時索引也用不上。
這裏介紹可以使用TRUNC(SYSDATE)=當天來比較過濾數據,達到取今天數據的效果。
SELECT TRUNC(SYSDATE) FROM DUAL;
--TRUNC(SYSDATE)
2013/1/5
下面的方法比較好。SELECT * FROM TBL_STEP T WHERE T.T_CREATE_TM >= TRUNC(SYSDATE);
如果取當年的數據
SELECT * FROM TBL_STEP T WHERE T.T_CREATE_TM >= TRUNC(SYSDATE,'YYYY');
當月的數據
SELECT * FROM TBL_STEP T WHERE T.T_CREATE_TM>=TRUNC(SYSDATE, 'MM') AND T.T_CREATE_TM<=LAST_DAY(SYSDATE)
參考:http://blog.csdn.net/chexitianxia/article/details/6945871