gpt4 book ai didi

php - mysql字段有十六进制时间,需要最近24小时内的所有记录

转载 作者:行者123 更新时间:2023-11-29 08:01:59 26 4
gpt4 key购买 nike

我对mysql有点陌生,但是在查看了很多与数据库中的十六进制值相关的SO示例,从十六进制转换为十进制,然后检索过去24小时内添加的所有记录后,我认为这会成功-- 下面查询中的thetimestamp是每条记录添加的时间,它是一个十六进制值:

      $query = "SELECT * FROM mytable"  
. " WHERE timediff(NOW(), CONV(thetimestamp, 16, 10)) < '24:00:00'";

在阅读各种 SO 示例时,有很多方法可以获取最近 24 小时内添加的记录,这似乎是最好使用的,因为如果我可以将数据库中的十六进制时间值转换为十进制,我怀疑上面的方法会起作用。

我的问题是,我必须使用的数据库以十六进制存储其时间,在上面查询中显示的字段中,thetimestamp

我认为像上面所做的那样使用 CONVERT 会将每个记录的 thetimestamp 从十六进制转换为十进制,以便对 timediff() 的调用成功。

运行查询时,我获得了有效的结果资源,但发现与我的查询匹配的记录为零,尽管记录已在过去 24 小时内添加。

我在这里使用 CONV() 是否错误?

最佳答案

CONV() 将为您提供一个 INTEGER,而不是 DATETIME。您必须对其使用 FROM_UNIXTIME() ,或者只使用简单的数学:

SELECT *
FROM mytable
WHERE UNIX_TIMESTAMP() - CONV(thetimestamp, 16, 10) < 86400

然后去找那个决定以十六进制存储时间戳的人,用棍子殴打他们,直到他们保证不再这样做。

关于php - mysql字段有十六进制时间,需要最近24小时内的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23572096/

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