gpt4 book ai didi

php - MySQL 双日期转换时遇到问题

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

我一直在寻找实现此目的的方法,但发现的信息非常有限。

我有一个 MySQL 表“msgdb”,其中包含格式为 double(25,8) 的字段“ttime”(示例行 = 1352899856.95249200)。

我需要定期清理表,方法是删除字段“ttime”<= 今天的日期 -5 天的所有行。

这是我能找到的与 double 到时间转换相关的唯一两行代码,但两者都无法工作。

SELECT ADDDATE(ADDDATE(ADDDATE('1899-12-31 00:00:00',FLOOR(ttime)), INTERVAL -1 DAY),INTERVAL(MOD(ttime,1)*86400)SECOND) AS TrueDate FROM msgdb

select date('1899-12-31 00:00:00'+ INTERVAL ttime * 24*3600 SECOND) as date from msgdb

在开始使用 DELETE FROM 之前,我首先尝试使用下面的代码显示与条件匹配的任何行,以确保获得正确的结果。

 $query = "select date('1899-12-31 00:00:00'+ INTERVAL ttime * 24*3600 SECOND) as date from msgdb";
$result = mysql_db_query ($dbname, $query, $link);
while($row = mysql_fetch_array($result)) {
echo $row['date'];
echo '<br>';
}

还有

 $query = "SELECT ADDDATE(ADDDATE(ADDDATE('1899-12-31 00:00:00',FLOOR(ttime)), INTERVAL -1 DAY),INTERVAL(MOD(ttime,1)*86400)SECOND) AS TrueDate FROM msgdb";
$result = mysql_db_query ($dbname, $query, $link);
while($row = mysql_fetch_array($result)) {
echo $row['TrueDate'];
echo '<br>';
}

但两者都没有返回任何内容。

更新:好的,使用以下代码:

$query = "select ttime from msgdb";
$result = mysql_db_query ($dbname, $query, $link);
while($row = mysql_fetch_array($result)) {
echo date('m-j-Y, H:i:s', $row[0]);
echo '<br>';
}

我可以看到它将“ttime”字段从存储值 1352899856.95249200 转换为 11-14-2012, 07:30:56。

那么我如何从表中删除 ttime <=now - 5 天的所有行?

最佳答案

找出哪些记录的日期早于某个时间点应该很容易:

DELETE FROM table WHERE ttime <= DATE_SUB(NOW(), INTERVAL 5 DAY);

如果您将所有时间存储在 UTC 中,那么使用 UTC_TIMESTAMP() 可能会更好,这是唯一明智的方法。

关于php - MySQL 双日期转换时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13391714/

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