【问题标题】:Logical expressions not working逻辑表达式不起作用
【发布时间】:2014-11-06 20:46:39
【问题描述】:

我有如下 SQL 语句:

SELECT * 
FROM tbl_test 
WHERE Carrier='XYZ' 
      && DateTime >= "2014-11-03" 
      && DateTime <= "2014-11-06"

发生的情况是,尽管第二个逻辑运算包括日期 2014-11-06,但搜索仅返回日期 2014-11-03 到 2014-11-05 的结果。

需要帮助来指导我可能出错的地方。

谢谢。

昙花一现

【问题讨论】:

  • 哪个数据库引擎? (Oracle、MySQL、SQL Server 等)
  • 您的日期字段是否包含时间组件?因为 2014-11-06 00:00:01 不符合条件。
  • 为什么不使用BETWEEN 关键字?
  • SELECT * FROM tbl_test where Carrier='XYZ' &amp;&amp; DateTime &gt;= "2014-11-03" &amp;&amp; DateTime &lt; "2014-11-07" 会给您预期的结果吗? (在第 2 个日期添加 1 并在第 2 个日期删除 =。另一种方法是在第二个日期时间比较时截断日期时间的时间部分。

标签: sql logical-operators


【解决方案1】:

这能解决您的问题吗?

SELECT *
FROM tbl_test
WHERE Carrier='XYZ' && DateTime >= "2014-11-03" && DateTime < "2014-11-07"

不同之处在于,这包括整个最后一天,而不仅仅是 2014-11-06 上午 00:00。

【讨论】:

  • 您好,感谢您的回复。当然帮助我深入了解问题。我设法通过如下修改查询来解决问题:SELECT * FROM tbl_test WHERE Carrier='XYZ' and DateTime between '2014-11-03 00:00' and '2014-11-06 23:59'
  • 如果您对其中一个答案感到满意,请标记它以完成您的问题。
【解决方案2】:
SELECT *
FROM tbl_test
WHERE Carrier='XYZ'
  and DateTime between '2014-11-03' and '2014-11-06'

【讨论】:

    猜你喜欢
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 2020-11-03
    相关资源
    最近更新 更多