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

ですべての要素を削除したいのですが、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注文できた結果はありません。代わりに、1 つのテーブル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 に答える