本文主要是介绍查询条件中的截止日期问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
界面输入查询条件显示为:
经办日期:2021-01-01 至 2021-01-28
生成的查询条件合理的应为:
WHERE AAE036 >= TO_DATE('2021-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss')
AND AAE036 <= TO_DATE('2021-01-28 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
常见的不合理情况
1、AND AAE036 <= TO_DATE('2021-01-28 00:00:00', 'yyyy-mm-dd hh24:mi:ss')
如果AAE036中时分秒不全为0,则无法查询到截止日期当天的数据
2、WHERE TO_CHAR(AAE036,'YYYY-MM-DD') >= '2021-01-01'
AND TO_CHAR(AAE036,'YYYY-MM-DD') <= '2021-01-28'
如果AAE036建了索引,TO_CHAR(AAE036,'YYYY-MM-DD')是无法使用到索引的。
3、WHERE AAE036 >= TO_DATE('2021-01-01 00:00:00', 'yyyy-mm-dd hh:mi:ss')
AND AAE036 <= TO_DATE('2021-01-28 23:59:59', 'yyyy-mm-dd hh:mi:ss')
24小时制应为hh24,不应该是hh,在oracle中hh是12小时制。
4、WHERE AAE036 >= TO_DATE('2021-01-01 00:00:00', 'yyyy-mm-dd hh24:mm:ss')
AND AAE036 <= TO_DATE('2021-01-28 23:59:59', 'yyyy-mm-dd hh24:mm:ss')
分钟是mi,不应该是mm,在oracle中mm是月
查询刚访问oracle的sql语句:
select * from v$sql where upper(sql_fulltext) like '%AAE036 >= TO_DATE(%'
and last_active_time > sysdate - 0.1;
这篇关于查询条件中的截止日期问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!