2012-08-17 64 views
0

在我的数据库的表中的数据:MySQL的删除其日期时间最近的系统时间

id_client(主键和AUTO_INCREMENT)

name_client(VARCHAR)

time_insert(日期时间)

例如DATAS在表中:

--------------------------------------- 
| 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离系统时间最近(最接近)的行,该如何编写命令?

+1

您应该指定“最接近”的意思。 “最接近系统时间”的 – Asciiom 2012-08-17 09:12:36

+0

? – stevey 2012-08-17 09:22:19

+0

对不起,我以为你想删除多行 – Asciiom 2012-08-17 09:25:55

回答

1

ORDER BY AND LIMIT也适用于删除语句。

DELETE FROM your_table ORDER BY time_insert desc LIMIT 1 
+0

实际上有超过一行的time_insert是相同的,但我不知道这个数字。 LIMIT 1它不起作用 – stevey 2012-08-17 09:19:45

+0

@marssteve然后添加其他条件以按照您希望的方式排序数据,以便只删除最上面一行。 – Fluffeh 2012-08-17 09:22:41

1

您也可以使用下面的 - 如果你想追溯一个,如果你改变了now()到要回去的日期删除该会的工作:

delete from tableName order by abs(now()-insert_time) asc limit 1 
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分钟的行。