【问题标题】:How to use greater than operator with date?如何在日期中使用大于运算符?
【发布时间】:2012-11-07 01:15:42
【问题描述】:

不知道这里发生了什么。这是来自 phpMyAdmin 的查询:

SELECT * FROM `la_schedule` WHERE 'start_date' >'2012-11-18';

但我始终返回表中的所有记录,包括开始日期为 2012-11-01 的记录。什么给了?

【问题讨论】:

  • 您的 start_date 列的类型是日期还是时间戳?

标签: mysql date operators


【解决方案1】:

你已经用单引号将start_date 封装成字符串,请改用backtick

SELECT * FROM `la_schedule` WHERE `start_date` > '2012-11-18';

【讨论】:

  • 如果它的时间戳会发生什么?
  • 值得注意的是,MySQL 似乎对日期格式有点挑剔;虽然 2019/02/08 21:04:07 或 2019-02-08 21:04:07 会产生预期结果,但使用美国日期格式的 02-08-2019 21:04:07 会产生更广泛的网络.
【解决方案2】:

在您的声明中,您将一个名为 start_date 的字符串与时间进行比较。
如果 start_date 是一列,则它应该是

SELECT * FROM `la_schedule` WHERE start_date >'2012-11-18';

(无撇号) 或

SELECT * FROM `la_schedule` WHERE `start_date` >'2012-11-18';

(带反引号)。

希望这会有所帮助。

【讨论】:

    【解决方案3】:

    试试这个。

    SELECT * FROM la_schedule WHERE `start_date` > '2012-11-18';
    

    【讨论】:

      【解决方案4】:

      添加这个,因为没有提到这个。

      SELECT * FROM `la_schedule` WHERE date(start_date) > date('2012-11-18');

      因为那才是真正适合我的。在两个比较值上添加 date() 函数。

      【讨论】:

        【解决方案5】:

        在我的情况下,我的专栏是一个日期时间,它不断给我所有记录。我所做的是包含时间,请参见下面的示例

        SELECT * FROM my_table where start_date > '2011-01-01 01:01:01';
        

        【讨论】:

          【解决方案6】:

          在解决方案下方的研究发现后,我已经尝试但以上不起作用。

          SELECT * FROM my_table where DATE(start_date) > '2011-01-01';
          

          Ref

          【讨论】:

            【解决方案7】:

            如果您正在比较时间戳 - 您可以尝试关注

            select * from table where columnInTimestamp > ((UNIX_TIMESTAMP() * 1000) - (1*24*60*60*1000))
            

            这里 UNIX_TIMESTAMP() 给出当前时间戳,其中 "12460601000" 是 1 天的时间戳 -- 这样您就可以找到刚刚创建的数据1 天或 2 天等。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2014-02-03
              • 1970-01-01
              • 1970-01-01
              • 2015-12-27
              • 1970-01-01
              • 1970-01-01
              • 2018-03-19
              相关资源
              最近更新 更多