2012-07-19 145 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