我已经搜索并搜索了执行此操作的方法,但发现的信息非常有限。
我有一个 MySQL 表“msgdb”,其中包含一个格式为 double(25,8) 的字段“ttime”(示例行 = 1352899856.95249200)。
我需要通过删除字段“ttime”<=今天的日期-5天的任何行来定期清理表格。
这些是我能找到的与双时间转换相关的仅有的两行代码,但其中任何一个都无法工作。
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 天的所有行?