【问题标题】:DATETIME select rows from last 2 hoursDATETIME 选择过去 2 小时内的行
【发布时间】:2019-01-24 21:58:24
【问题描述】:

我正在尝试从过去 2 小时中选择行。由于某种原因,它不起作用。代码语法在其他表上使用时看起来不错并且可以工作,但由于某种原因,在表 Posts 上使用时,获取的行早于 2 小时。

SELECT * FROM Posts WHERE `Date` > SUBDATE( CURRENT_DATE, INTERVAL 2 HOUR)

代码有问题吗?有没有别的写法?这可能是什么原因?

【问题讨论】:

  • CURRENT_DATE 没有时间部分,所以当你减去 2 小时时,你就是从午夜减去。检查我的答案。

标签: mysql sql


【解决方案1】:

您可以使用更简单的符号:

SELECT * FROM Posts WHERE `Date` > NOW() - INTERVAL 2 HOUR

【讨论】:

    【解决方案2】:

    那是因为你使用的是CURRENT_DATE,你应该改用NOW()CURRENT_TIMESTAMP

    问题是使用CURRENT_DATE,作为日期值,时间默认为00:00:00,所以减去2小时你最终得到前一天的22:00:00,而不是最后2小时.. .

    【讨论】:

      【解决方案3】:

      改成这样:

      SELECT * FROM Posts WHERE `Date` > SUBDATE( CURRENT_TIMESTAMP, INTERVAL 2 HOUR)
      

      【讨论】:

        【解决方案4】:

        你可以试试这个

        SELECT * FROM Posts WHERE `Date` > DATE_SUB(CURDATE(), INTERVAL 3 HOUR)
        

        【讨论】:

          【解决方案5】:

          以上答案都不适合我,试试这个:

          SELECT * FROM POSTS WHERE DATE > DATEADD(HH, (-2), GETDATE())
          

          【讨论】:

            猜你喜欢
            • 2013-06-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-10
            • 2020-09-06
            • 1970-01-01
            相关资源
            最近更新 更多