问:
我在用.net制作一个IP登陆记录系统,其中想实现一个功能:
系统可以自动删除已经记录的前一个月的IP地址,.也就是说记录了两个月后,删除上一个月的记录.
我开始是这么想的,取数据库表中首尾两条记录比较时间字段,如果间隔大于两个月,则删除大于首记录时间一个月的所有记录.
可是,很难通过一条select取到首尾两条记录.后朋友启发,每次运行时与当前时间比较也可.
遂用此法.但以前之想法仍在脑中,不只如何实现.
1、如何用select取首尾记录
2、如何进行记录间某个字段的比较。比如说时间字段。
当然我不是要通过两次datareader进行比较。而是尽量简单的方法。谢谢
答:
1、如何用select取首尾记录
select * from tablename
where datefield=(select min(datefield) from tablename) or datefield=(select max(datefield) from tablename)
select top1 * from t1 order by t1.colTime
union all
select top1 * from t1 order by t1.colTime DESC
2、如何进行记录间某个字段的比较。比如说时间字段。
datediff用于时间的比较,可以看联机帮助
你可以不用取时间比较,直接
delete tablename
where datefield<dateadd(month,-2,getdate())
如果没有符合条件的,这个语句不会产生副作用
DELETE FROM youtTable
WHERE
DATEDIFF(mm, DateCreated, GetDate()) > 1
DateCreated是你纪录的时间字段
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=13135