gpt4 book ai didi

php - 按时间戳排序已损坏?

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

我正在我的网站上创建“最近捐赠”选项卡。

我做了这样的查询:

$result = mysqli_query($con, "SELECT * FROM dc_donations ORDER BY DATE(dt) LIMIT 5");

但是当我今天收到新的捐款时。看起来它把新的放在最后(所以新的放在最后)。我的理论是,它的顺序正常,并且 2014-01-30 出现在 2014-02-01 之前。

表的“dt”列是一个 TIMESTAMP 字段,自动填充为 CURRENT_TIMESTAMP

最佳答案

我发现您的查询可能存在两个问题。

 SELECT * 
FROM dc_donations
ORDER BY DATE(dt) /* slow and wrong ! */
LIMIT 5

首先,您正在存储完整的日期和时间,但当您进行排序时,您只是按日期部分进行排序。这就是 DATE(dt) 的作用。这会给你带来两个问题。 a) 希望您在每个日历日都会收到大量捐款,包括新到达的捐款。 SQL 排序的工作方式是,如果您没有完全指定顺序,则服务器可以不可预测地(随机)对项目进行排序。因此,您的查询将显示五个旧捐赠的随机集合。 b) 在 ORDER BY 子句中的列上使用函数会导致该操作无法使用索引。当您扩大规模时,这可能会大大减慢您的查询速度。

第二,您想要最近的五笔捐款吗?如果是这样,请使用DESC。我相信您想要这个查询。

 SELECT * 
FROM dc_donations
ORDER BY dt DESC
LIMIT 5

专业提示:请勿在生产软件中使用SELECT *。相反,枚举您需要检索的列。

关于php - 按时间戳排序已损坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21499300/

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