有人可以解释为啥以下查询的功能不同吗?从字面上看,两者之间的唯一区别是

Posted

技术标签:

【中文标题】有人可以解释为啥以下查询的功能不同吗?从字面上看,两者之间的唯一区别是【英文标题】:Can someone explain why the below queries function differently? Literally the only difference between the two is that有人可以解释为什么以下查询的功能不同吗?从字面上看,两者之间的唯一区别是 【发布时间】:2016-11-15 21:57:22 【问题描述】:

除了第一个在最后一行有 >= 而第二个有 = 之外,以下两个查询是相同的。然而第一个返回 129 行,而第二个返回 0。今天是 2016 年 11 月 15 日,所以我希望它们返回相同的值。 date_time 的数据类型是日期。

有人能解释一下为什么简单地将运算符从 >= 更改为 > 会改变结果吗?谢谢,

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')

【问题讨论】:

您是否查看过完整的时间戳,包括小时、分钟、秒等?似乎有些订单的时间戳为 2016 年 11 月 16 日。你的是国际网站吗?是否有来自其他时区的带有本地时间戳的订单?是否所有日期都转换为 UTC 或单个时区? 谢谢 mba12,我不确定日期是本地日期还是 UTC,或者是否发生了一些转换,但所有订单都是在 ~ 正常营业时间内在两个时区之一输入美国,所以我认为不可能。 【参考方案1】:

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

【讨论】:

以上是关于有人可以解释为啥以下查询的功能不同吗?从字面上看,两者之间的唯一区别是的主要内容,如果未能解决你的问题,请参考以下文章

预期时间复杂度为 O(n^2),但结果为 O(n)。有人可以解释为啥吗?

有人可以解释为啥会出现这个错误吗?

有人可以解释为啥我的最后一个 else 语句不会运行吗?

有人可以向我解释为啥 L(长)必须在那里吗? [复制]

有人可以解释为啥条件运算符和赋值运算符一起使用时表现奇怪吗?

我在 64 位机器上优化 memset 的尝试比标准实现需要更多时间。有人可以解释为啥吗?