查询条件中的截止日期问题
Posted sxdtzhp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查询条件中的截止日期问题相关的知识,希望对你有一定的参考价值。
界面输入查询条件显示为:
经办日期: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;
以上是关于查询条件中的截止日期问题的主要内容,如果未能解决你的问题,请参考以下文章
输出java.util.Date()时间与电脑实际时间相差8小时,分秒 日期都不差,使用的Struts2三层框架?
c#dataset转换为list时,其中一个表中有一列是数据是datetime类型,我只想要小时分秒,不要日期,怎么弄呢