一个无法正常工作的mysql删除查询。为什么?

| 我有一个包含3行的表,其中一行包含唯一的时间代码(例如:1308162911)。这些记录很多,但是我想删除所有大于一天(AKA 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\'\");
    
已邀请:
        Unix时间戳会随着时间的推移而增加,因此您的查询将删除所有早于24小时之前(不超过24小时)的记录。 您也应该可以删除时间戳记值附近的单引号。 如果仍然有问题,请您包含执行
mysql_query()
的代码行和数据库的格式(
SHOW CREATE TABLE myTable
的输出)     
        我不确定MySQL,但是可能您需要这样的东西:
DELETE FROM $tbl WHERE DATEDIFF(\'$now\', time) > INTERVAL 1 DAY
    
        这样的事情怎么样:
$yesterday = strtotime(\'-1 day\');

$delete = \"DELETE FROM $tbl WHERE time > FROM_UNIXTIME($yesterday)\";
上面的查询将删除\“ time \”值大于24小时前的所有行。假定\“ time \”字段是TIMESTAMP,DATETIME或DATE类型。如果要删除早于一天的记录,请将>更改为<。     
        
select * from table
where now() - interval 1 day > from_unixtime(unix_timestamp_field)
如果您要查找的是将选择转换为删除查询的内容     
        这应该工作:
DELETE FROM $tbl 
WHERE FROM_UNIXTIME(`time`) > DATE_SUB(NOW(), INTERVAL 1 DAY);
否则,在您的代码中,我认为您应该删除$ now附近的单引号。但是,我认为将其作为MySQL查询的一部分来做是一个好主意,以避免PHP和MySQL如果两者都在不同的时区中运行,则可以避免任何时间差异     

要回复问题请先登录注册