除了第一个在最后一行有 >= 而第二个有 = 之外,下面的两个查询是相同的。然而第一个返回 129 行,而第二个返回 0。今天是 2016 年 11 月 15 日,所以我预计它们会返回相同的结果。 date_time的数据类型为date。
有人可以解释为什么简单地将运算符从 >= 更改为 > 会改变结果吗?谢谢,
select orderid
from order_log
where order_version = 0
and description = 'Order Complete'
and date_time **>=** to_date('11-15-2016', 'MM-DD-YYYY')
select orderid
from order_log
where order_version = 0
and description = 'Order Complete'
and date_time **=** to_date('11-15-2016', 'MM-DD-YYYY')
最佳答案
date_time 是一个时间戳(日期 + 时间),您没有恰好在午夜 (2016-11-15 00:00:00) 发生的事件。
select sysdate
,case when sysdate = date '2016-11-16' then 'Y' else 'N' end as is_equal
from dual
SYSDATE IS_EQUAL
2016-11-16 00:23:37 N
关于sql - 有人可以解释为什么以下查询的功能不同吗?从字面上看,两者之间的唯一区别是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40620450/