3

我想做一些不复杂的事情,但即使我尝试了很多事情,我也没有成功......

首先,我有一个带有一行时间戳类型的数据库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

我想用 a 删除所有元素,但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");

但这些都不起作用。你能帮我吗,我认为这不是太难,但我没有想法......

4

4 回答 4

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 小时

于 2012-10-23T14:45:03.883 回答
2

在所有查询中,您都忘记了WHERE关键字,因此它们在语法上是错误的。此外,该ORDER BY语句没有效果,因为您没有执行SELECT查询。没有可以订购的结果。相反,单个表DELETE查询返回已删除行数的计数

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 ;
于 2012-07-19T19:37:06.070 回答
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")));

Bonne chance à toi / 祝你好运

于 2012-07-19T19:29:37.243 回答
0

试试这个:

DELETE FROM my_table WHERE UNIX_TIMESTAMP(date) > 60 * 60 * 20 + UNIX_TIMESTAMP();
于 2012-07-19T19:29:49.087 回答