【问题标题】:MySQL Timestamp - Display 3 Rows within last hourMySQL 时间戳 - 在过去一小时内显示 3 行
【发布时间】:2012-07-08 08:53:54
【问题描述】:

如何显示在过去一小时内具有时间戳值的行?

这是我现在所拥有的,它显示了最新的行,由于 LIMIT,只有 3 行。

$query5= mysql_query("SELECT * FROM  `made_orders` ORDER by id DESC LIMIT 0,3");



    WHILE($datarows5 = mysql_fetch_array($query5)):

    $name4 = $datarows5['Name'];
    $phone4 = $datarows5['Phone'];
    $entree4 = $datarows5['Entree'];
    $side14 = $datarows5['Side 1'];
    $side24 = $datarows5['Side 2'];
    $drink4 = $datarows5['Drink'];
    $totalcost4 = $datarows5['Total Cost'];
    $ip4 = $datarows5['Ip'];
    $id4 = $datarows5['id'];
    $time4 = $datarows5['timestamp'];

    echo "<iframe src=\"creatmeal-data.php?id={$id4}\" width=\"430px\" style=\"border:0px\" height=\"350px\"/></iframe>";

endwhile; ?>

在我上面的代码中,每次找到一行时,它都会回显一个 iframe。我将如何编辑查询以使用我的时间戳列仅显示一小时内的最新消息。

提前感谢您的帮助!

编辑:这是我的时间戳列的样子:http://img856.imageshack.us/img856/4135/columnk.png

【问题讨论】:

  • 您可以通过一个简单的 WHERE(条件)语句来做到这一点。由于您没有指定使用哪种时间戳(Unix、SQL 等),我无法给您一个明确的答案,但如果是 unix,它会看起来像这样:SELECT * FROM made_orders WHERE timestamp &gt; '".time()-3600."' ORDER BY id DESC跨度>

标签: php mysql timestamp


【解决方案1】:

您当前的查询会获取最近的三个订单,无论它们是否是在过去一小时内创建的。

使用这个解决方案:

SELECT *
FROM made_orders
WHERE timestamp >= NOW() - INTERVAL 1 HOUR
ORDER BY timestamp DESC
LIMIT 3

这将在过去一小时内最多获得三个订单。如果最近一小时内只有一个订单,它只会选择一行。

【讨论】:

    【解决方案2】:

    SELECT * FROM made_orders ORDER by id WHERE UNIX_TIMESTAMP(yourTimestampColumn) > UNIX_TIMESTAMP() - 60*60

    【讨论】:

      猜你喜欢
      • 2011-05-02
      • 2011-02-08
      • 2011-05-31
      • 2013-02-09
      • 2021-05-20
      • 2011-12-23
      • 2018-01-14
      • 1970-01-01
      • 2018-12-05
      相关资源
      最近更新 更多