我想取数据库里24小时之内的记录并按点击次数排序,下面的sql怎么不行:select * from index_message_middle  where DATEDIFF("h",TIME,GETDATE())<24 order by  bits descTIME 是数据库记录发布日期的字段,bits是点击次数

解决方案 »

  1.   

    1. MySQL中不是getdate() 那是SQL SERVER中的,MYSQL中可以用NOW()
    2, 使用 date_sub进行减24小时select * 
    from index_message_middle  
    where `TIME` > DATE_SUB(NOW(),INTERVAL 24 HOUR) 
    order by  bits desc
      

  2.   

    select * from index_message_middle  where hour(TIMEDIFF(TIME,curdate())) <24 order by  bits desc
      

  3.   

    楼上代码是不行了。 curdate() 仅返回日期部分 即 2009-06-19 00:00:00 ,是无法满足要求的。可以改为如下。
    注意TIMEDIFF的方向。及time关键字。select * 
    from index_message_middle  
    where hour(TIMEDIFF(NOW(),`TIME`)) <24 
    order by  bits desc或者select * 
    from index_message_middle  
    where TIMEDIFF(NOW(),`TIME`)<240000 
    order by  bits desc