2012-07-19 251 views
3

我想要做一些并不复杂,但我不管理,甚至后,我尝试了很多事情才能成功....时间戳比较删除当MySQL时间戳>20分钟

首先,我有一个数据库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

如果您向我们展示您的表格的结构可能会有所帮助。那么,也许你得到的错误。 – Wolfram 2012-07-19 20:19:29

回答

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"))); 

博讷可能有TOI /祝你好运

+0

我很抱歉,但没有为我工作,我不明白为什么.....? – user1106464 2012-07-19 20:09:51

+0

你有什么错误? – PoulsQ 2012-07-19 20:11:58

+0

我没有错误,但没有发生 – user1106464 2012-07-19 20:24:08

0

试试这个:

DELETE FROM my_table WHERE UNIX_TIMESTAMP(date) > 60 * 60 * 20 + UNIX_TIMESTAMP(); 
+0

这不起作用 – user1106464 2012-07-19 20:12:09

+0

*”试试这个:“*是一个[subpar答案装饰](http://stuck.include-once.org/#help10)。相反,请添加一个细微的解释*什么*你的代码确实,*为什么*你会推荐它,或者*你如何得出结论。 – mario 2012-07-19 22:34:37

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 ; 
+0

对于WHERE子句,我在删除my_table时删除了它... – user1106464 2012-07-19 20:06:28

+0

这不起作用 – user1106464 2012-07-19 20:11:57

+0

不用担心,但缺少更多的东西,你没有将'date'与'DATE_SUB'结果进行比较。 – Wolfram 2012-07-19 20:12:26

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

+0

$ delete = mysql_query(“DELETE FROM sessions WHERE TIME 2012-12-19 15:28:20