再见.net|BYE Dot Net

坎坷与欢愉,求索与奋进

My Links

Blog统计

公告

博客蓝备份空间

文章

收藏

相册

.net相关

Maya&3D max相关

My Document

Webdesign相关

其他

网络营销

友情博客

存档


正在读取评论……

问:

我在用.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


[点击此处收藏本文]  发表于2004年04月19日 12:24 PM




正在读取评论……
大名
网址
验证码
评论