【问题标题】:MySQL select only where Timestamp is from last 10 daysMySQL 仅选择时间戳来自过去 10 天的位置
【发布时间】:2011-10-19 10:23:11
【问题描述】:

我想将查询限制在过去 10 天内输入的结果。 TIMESTAMP 列称为日期。我该怎么做?

$result = mysql_query("SELECT * FROM Posts WHERE (City = '$city2') ORDER by Comments DESC LIMIT 5");

谢谢

【问题讨论】:

    标签: php mysql timestamp


    【解决方案1】:

    假设你的数据是每小时也可以使用:

    (SELECT * FROM comments ORDER BY DateTime desc LIMIT 240) order by DateTime
    

    我发现这更准确地返回 10 天到小时。

    【讨论】:

      【解决方案2】:
      SELECT *
      FROM Comments
      WHERE (City = '$city2') AND (`Date` > DATE_SUB(now(), INTERVAL 10 DAY));
      

      注意:将列称为“日期”是一种不好的做法,因为它是一个保留字。

      【讨论】:

      • 对不起,我发布了错误的查询。我尝试使用它,它看起来不错,但我没有得到任何结果。但是我昨天输入的所有帖子。 (1 天后)。
      • 确认您的日期字段包含正确的日期,并且实际上是一个日期时间字段。如果它是一个 int(例如 unix 时间戳),则此查询将不起作用,您必须使用 unix_timestamp/from_unixtime 进行适当的转换。
      • 确保您的托管服务器设置了您的区域时间,否则时间的计算将基于您在夏威夷时迈阿密的服务器设置。它发生了。
      • 很好的代码示例,尽管告诉别人他们的做法很糟糕是不礼貌的。大声笑...旧帖子!我知道,希望你在过去的那段时间里养成了一些美好而甜蜜的举止。爱你的男人。
      【解决方案3】:

      您可以使用DATEDIFF,或者,正如已经发布的那样,DATE_SUB。另外,我建议不要对列名使用“日期”等保留字。您的代码示例:

      WHERE DATEDIFF(NOW(), `Date`) < 10
      

      【讨论】:

      • 从我在 PhpMyAdmin 中运行的一些测试来看,它的效率似乎比 DATE_SUB 低(大约慢 2 倍)。
      【解决方案4】:

      尝试使用 date_sub

      select * from Comments 
      where City = '{$city2}' and 
      `Date` > date_sub(now(), interval 10 day)
      

      【讨论】:

        猜你喜欢
        • 2013-02-09
        • 2013-08-28
        • 1970-01-01
        • 2014-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-14
        • 2016-05-27
        相关资源
        最近更新 更多