sql - 在日期之间获取数据不准确

标签 sql oracle

我正在尝试获取两个日期之间的数据。我的查询是:

select * 
  from TABLE
 where CREATED_DATE >= '11-MAY-2015'
   and CREATED_DATE <= '11-MAY-2015'

它不返回任何值。虽然数据存在于 5 月 11 日,如果我将日期指定为

,则可以获取这些数据
CREATED_DATE  >= '11-MAY-2015'  and CREATED_DATE <= '12-MAY-2015'

最佳答案

DateType Date 也有时间部分。
当你说 '11-MAY-2015' 它实际上是 '11-MAY-2015 00:00:00'

Date
This datatype contains the datetime fields YEAR, MONTH, DAY, HOUR, MINUTE, and SECOND. It does not have fractional seconds or a time zone.

试试这个查询

select * 
from TABLE
where
CREATED_DATE  >= date '2015-05-11'  and CREATED_DATE < date '2015-05-12'

这将生效

11-MAY-2015 00:00:00 <= CREATED_DATE <  12-MAY-2015 00:00:00

或者使用 Trunc 将忽略日期的 time:

select * 
from TABLE
where
Trunc(CREATED_DATE) = date '2015-05-11'

编辑:使用 date literals 更新日期字段,因为 11-MAY-2015 仅适用于某些 NLS 设置。( @Ben@David Aldridge 的评论)

关于sql - 在日期之间获取数据不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32560086/

相关文章:

mysql - 一对一的 FK 约束

Oracle V$OSSTAT

sql - Grails过滤器统计信息插入效果

mysql - 如何将subscribers表中的400万条记录迁移到mysql中的40个表中?

php - DATE 数据类型的 Mysql PDO 准备语句问题

java - 跟踪数据库更改

sql - oracle sql 开发人员正在截断我的结果

mysql - 无法识别使用 MAX 和 OVER PARTITION BY 的语法问题

oracle - 关于 Oracle 版本控制系统的建议

mysql - 处理 SQL 保留表名和列名