[英]Timestamp comparison to delete when mysql timestamp > 20 minutes
我想做一些並不復雜的事情,但即使我嘗試過很多事情,我也無法成功......
首先,我有一個帶有一行時間戳類型的數據庫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");
但這一切都不起作用。 你能幫幫我嗎,我認為這不是太難,但我沒有想法......
$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小時
在您的所有查詢中,您忘記了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 ;
試試這個 :
$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/祝你好運
試試這個:
DELETE FROM my_table WHERE UNIX_TIMESTAMP(date) > 60 * 60 * 20 + UNIX_TIMESTAMP();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.