表(news)结构如下:
id,Title,AddDate,typeid,content,hits
1  新闻1 2004-07-28 00:00:00 国内新闻 新闻1内容 300
2  新闻2 2004-07-26 00:00:00 财经新闻 新闻2内容 139
3  新闻3 2004-07-29 00:00:00 国外新闻 新闻3内容 118
………………想得到的结果:
按hits排序并且离当前时间一个月的记录,只top 10条
(就是得到一个本月点击排行榜)

解决方案 »

  1.   

    --试一下
    Select Top 10 *
    From News
    Where DateDiff(mm,AddDate,Getdate())=1
    Order by Hits Desc
      

  2.   

    谢谢,可以告诉我一下 DateDiff(mm,AddDate,Getdate())=1是什么意思吗?
      

  3.   

    表示比当前时间小一个月,getdate()表示当前时间
      

  4.   

    即当前时间与表中AddDate按月份相减!为1时就是1月以前了:)
      

  5.   

    declare @t1   table  (id int,Title char(10),AddDate datetime,typeid char(10),content char(10),hits int)
    declare @t2   table  (id int,Title char(10),AddDate datetime,typeid char(10),content char(10),hits int)
    insert @t1
    select 4 , '新闻4' ,'2006-07-01 00:00:00', '国外新闻' ,'新闻4内容', 120  union all 
    select 1 , '新闻1','2006-07-01 00:00:00', '国内新闻', '新闻1内容', 300  union all
    select 2 , '新闻2', '2006-07-09 00:00:00', '财经新闻', '新闻2内容' ,139 union all
    select 3 , '新闻3' ,'2006-07-10 00:00:00', '国外新闻' ,'新闻3内容', 118 insert @t2
    select 1 , '新闻1','2006-07-28 00:00:00', '国内新闻', '新闻1内容', 300  union all
    select 2 , '新闻2', '2006-07-26 00:00:00', '财经新闻', '新闻2内容' ,139 union all
    select 3 , '新闻3' ,'2006-07-29 00:00:00', '国外新闻' ,'新闻3内容', 118 select * from @t1 Where DateDiff(dd,AddDate,Getdate())<30
      

  6.   

    select top 10 * from @t where dateadd(month,-1,getdate())<adddate and getdate()>=adddate order by hits desc