0

私のデータベースのテーブルで:

id_client(主キーと auto_increment)

name_client(varchar)

time_insert(日付時刻)

たとえば、テーブル内のデータ:

---------------------------------------
| id_client  name_client  time_insert
| 1            tintin     2012-08-17 11:04:04
| 2            tata       2012-08-17 11:06:15
| 3            toto       2012-08-17 11:10:05

time_insertシステム時間に最も近い(最も近い)行を削除したい場合、どのようにコマンドを書くことができますか?

4

3 に答える 3

1

サーバーサイドタイムを使用することをお勧めします。ユーザーがタイムゾーンを選択できるようにします。サーバー時間を使用することにより、このようにすることができます

$curtime=date('Y-m-d\TH:i:s\Z');//get cureent time of surver
$curtime=date('Y-m-d\TH:i:s\Z', round(strtotime($curtime)/60)*60);

$tim1=strtotime("+2 minutes",strtotime($curtime));
$t1=date('Y-m-d\TH:i:s\Z',$tim1);
$tim2=strtotime("-2 minutes",strtotime($curtime));
$t2=date('Y-m-d\TH:i:s\Z',$tim2);

$sql="DELETE FROM tbl_name WHERE time_insert BETWEEN '$t2' AND '$t1'";

これを使用すると、現在の時刻に近い時刻の行を削除できます。たとえば、2分間隔を使用しています。

于 2012-08-17T09:29:44.380 に答える
1

以下を使用することもできます。これは、元に戻したい日付に変更した場合に削除now()の日付を戻したい場合に機能します。

delete from tableName order by abs(now()-insert_time) asc limit 1
于 2012-08-17T09:17:19.387 に答える
1

ORDER BYANDLIMITは delete ステートメントでも機能します。

DELETE FROM your_table ORDER BY time_insert desc LIMIT 1
于 2012-08-17T09:12:29.227 に答える