我想做一些并不复杂的事情,但即使我尝试过很多事情,我也无法成功......
首先,我有一个带有一行时间戳类型的数据库mysql。我用这样的日期插入元素:
$date = date('Y-m-d H:i:s', time());
$req =mysql_query("INSERT INTO my_table (id, departement, voie, date,message)
VALUES ('', '$departement_token', '$voie_token','$date' , '$message_token')");
此代码行的结果是这样的日期元素:2012-07-19 20:18:17
我想删除date > current date + 20 minutes
的所有元素,但我没有成功...
我试过了:
mysql_query("DELETE FROM my_table WHERE DATE_SUB(date,INTERVAL 20 MINUTE) ORDER BY date");
而且:
$req=mysql_query("DELETE FROM my_table WHERE date >= TIMESTAMPADD(MINUTE,-20,NOW())
ORDER BY date");
而且:
$timePlus20min = time() + 1200;
//et on compare les deux dates
$req = mysql_query(
"DELETE FROM my_table WHERE UNIX_TIMESTAMP(date) >= '$timePlus20min' ORDER BY date");
但这一切都无效。你能帮帮我吗,我认为这不是太难,但我没有想法......
答案 0 :(得分:3)
$period=date('Y-m-d H:i:s',time()-(60*60*6)); // 6 hour before
"SELECT * FROM limitlessisa WHERE UNIX_TIMESTAMP(REG) > UNIX_TIMESTAMP('$period')";
REG // timestamp row name
这很有效。上市数据前6小时
答案 1 :(得分:2)
在您的所有查询中,您忘记了WHERE
关键字,因此它们在语法上是错误的。此外,ORDER BY
语句不起作用,因为您没有执行SELECT
查询。没有可以订购的结果。相反,单个表DELETE
查询返回a count of the number of deleted rows。
DELETE FROM my_table WHERE date >= DATE_ADD(NOW(), INTERVAL 20 MINUTE);
由于我不知道您的表结构,我使用下表尝试了此查询:
CREATE TABLE `datetest` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;
答案 2 :(得分:1)
试试这个:
$req=mysql_query("DELETE FROM my_table WHERE date <= ".date("Y-m-d H:i:s", mktime(date("H"), date("i")-20, date("s"), date("m"), date("d"), date("Y")));
Bonnechanceàtoi/祝你好运
答案 3 :(得分:0)
试试这个:
DELETE FROM my_table WHERE UNIX_TIMESTAMP(date) > 60 * 60 * 20 + UNIX_TIMESTAMP();