gpt4 book ai didi

MySQL - BETWEEN 将不会选择正确的结果

转载 作者:行者123 更新时间:2023-11-29 01:24:11 30 4
gpt4 key购买 nike

我正在尝试选择两个日期之间的行。首先,这是我的数据:

punch_id    eid     time    unixtime    punch_type  day     date        doy
135 2 12:53 1314723193 0 4 08/28/2011 241
134 2 12:53 1314723190 3 4 08/31/2011 241
133 2 12:53 1314723187 2 4 08/20/2011 241
132 2 12:52 1314723125 1 4 08/30/2011 241

我尝试过这两个查询。

SELECT * FROM `punches` WHERE `date` >= '08/20/11' AND `date` <= '08/31/11'

SELECT * FROM `punches` WHERE `date` BETWEEN '08/20/11' AND '08/31/11'

这两个选项都不会选择包含日期 08/31/11 的行。但它选择 08/20/11 的。我尝试以另一种方式使用它,当我运行查询时:

SELECT * FROM `punches` WHERE `date` >= '08/10/11' AND `date` <= '08/20/11'

我再次没有得到正确的结果:20 号再次被遗漏。我执行此操作的方式有什么问题?

最佳答案

参见this related问题。

正如其他人提到的,您的主要问题不是考虑时间。有几个选项可以解决这个问题:

  1. 使用函数将 DateTime 转换为 Date。我不推荐此选项,因为它可能会使函数non-sargeable .

  2. 扩展您的BETWEEN明确包含当天的最后时刻:(注意:这是MS SQL可以存储的最新可能值,不知道MySQL是否有相同的值)

    SELECT * FROM `punches` WHERE `date` 
    BETWEEN '08/20/11 00:00:00.000' AND '08/31/11 23:59:59.997'
  3. 使用<为上限值

    SELECT * FROM `punches` WHERE `date` >= '08/20/11' AND `date` < '09/01/11'

实际上,我认为在大多数情况下,最后一个更容易。

我想您可以做其他事情,例如更改列的数据类型,但我在这里假设您只对更改查询感兴趣。

** 免责声明:我是 MS SQL 人员,而不是 MySQL

关于MySQL - BETWEEN 将不会选择正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7247520/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com