我有一个有3行的表,其中一行包含唯一的时间代码(例如: 1308162911)。有很多这样的记录,但是我想删除所有大于一天的记录(也就是86400秒)。我有这个查询,但它不起作用(什么都没有发生):
$db = mysql_connect($hostname, $db_user, $db_password);
mysql_select_db($database,$db)or die( "Unable to select database");
$now = time() - 86400;
$delete = ("DELETE FROM $tbl WHERE time > '$now'");发布于 2011-06-16 02:51:38
Unix时间戳随着时间的推移而增加,因此您的查询将删除24小时前的所有记录,而不是24小时前的记录。
您也可以删除时间戳值两边的单引号。
如果您仍然有问题,请包括执行mysql_query()的代码行和数据库的格式(SHOW CREATE TABLE myTable的输出)
发布于 2011-06-16 02:55:24
我对MySQL不太确定,但你可能需要这样的东西:
DELETE FROM $tbl WHERE DATEDIFF('$now', time) > INTERVAL 1 DAY发布于 2011-06-16 02:59:45
这样如何:
$yesterday = strtotime('-1 day');
$delete = "DELETE FROM $tbl WHERE time > FROM_UNIXTIME($yesterday)";上面的查询将删除"time“值恰好大于24小时前的所有行。假设"time“字段是TIMESTAMP、DATETIME或DATE类型。如果要删除早于一天的记录,请将>改为<。
https://stackoverflow.com/questions/6362715
复制相似问题