You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Oracle数据库DATE类型数据非包含式查询:提取14号数据

Oracle SQL:非包含式日期范围查询提取指定日期数据

嘿,针对你要从Oracle表里提取REQUEST_DATE为14/04/18的数据的需求,用非包含式的日期范围查询是最稳妥的做法——毕竟Oracle的DATE类型自带时分秒信息,直接用=匹配的话,只会抓当天00:00:00的记录,漏掉那些带具体时间的行可就麻烦了。

直接上可用的SQL语句(记得把your_table_name替换成你的实际表名):

SELECT ID, REFERENCE, REQUEST_DATE
FROM your_table_name
WHERE REQUEST_DATE >= TO_DATE('14/04/18', 'DD/MM/YY')
  AND REQUEST_DATE < TO_DATE('15/04/18', 'DD/MM/YY');

为什么这么写?

  • >= TO_DATE('14/04/18', 'DD/MM/YY')匹配14/04/18当天00:00:00及之后的所有记录
  • < TO_DATE('15/04/18', 'DD/MM/YY')匹配15/04/18当天00:00:00之前的所有记录
  • 这样就精准覆盖了14/04/18一整天的所有数据,不管REQUEST_DATE里的时分秒是什么值,而且完全符合你要求的非包含式日期范围查询(没有用=直接匹配日期)

另外提一句,有人会用TRUNC函数来处理日期,但这种写法如果REQUEST_DATE字段上建有索引的话,会导致索引失效,影响查询效率,所以更推荐上面的范围查询写法:

-- 不推荐(可能影响索引使用),仅作参考
SELECT ID, REFERENCE, REQUEST_DATE
FROM your_table_name
WHERE TRUNC(REQUEST_DATE) = TO_DATE('14/04/18', 'DD/MM/YY');

内容的提问来源于stack exchange,提问作者Genaut

火山引擎 最新活动