0

我一直在根据时间戳从我的数据库中删除记录。

我的查询很简单

delete from calldetailrecord where StartTime between 1262321999000 AND 1309492799000;

1262321999000 = 2009 年 12 月 31 日星期四 23:59:59 GMT-0500(东部标准时间)

1296449999000 = 2011 年 1 月 30 日星期日 23:59:59 GMT-0500(东部标准时间)

几毫秒,我用过:

http://www.ruddwire.com/handy-code/date-to-millisecond-calculators/进行计算

我想知道如何制作一个while循环来逐月删除数据并在没有更多数据时停止。

4

3 回答 3

2

我想知道如何制作一个while循环来逐月删除,当没有更多数据时它会停止。

如果要从表中删除所有数据,请使用 truncate 命令。

truncate calldetailrecord;

只需一个人delete也可以

delete from calldetailrecord;
于 2012-12-14T19:32:52.627 回答
0

看起来你想做选择性删除。首先准备要删除的时间段,生成单个查询然后运行它。

DELETE FROM calldetailrecord WHERE StartTime BETWEEN 1353897342 AND 1353897592 OR StartTime BETWEEN 1353897754 AND 1353897764;

您应该尽可能少地使用到 db 的连接。

于 2012-12-14T21:28:15.130 回答
0

我认为您将通过这种方式获得更好的性能:

Create table  new_table as select *  calldetailrecord where StartTime > 1309492799000

drop table calldetailrecord;
alter table new_table rename to calldetailrecord;

这解决了逐行删除的问题,这将非常慢。

于 2012-12-14T19:49:06.343 回答