如果找到与给定日期最接近的一条记录啊? 
假设:
     表名 d_liuxiang
     日期字段是 sendate,
     给定日期为 2006-08-20
如何找到与给定日期相比,在日期段上最接近的一条记录啊?

解决方案 »

  1.   

    select top 1 * from d_liuxiang
    order by abs(datediff(ms,'2006-08-20',sendate))
      

  2.   

    如果时间跨度太大,就不要用毫秒,改用秒或者分钟
    select top 1 * from d_liuxiang
    order by abs(datediff(s,'2006-08-20',sendate))or
    select top 1 * from d_liuxiang
    order by abs(datediff(mi,'2006-08-20',sendate))
      

  3.   

    我的时间跨度是看天来算的,是不是该成
       select top 1 * 
       from d_liuxiang
       order by abs(datediff(day,'2006-08-20',sendate)) 这样呢?
       另外 这个报syntax error 的错误,小第新手,麻烦大家了
      

  4.   

    select top 1 * 
    from d_liuxiang
    order by abs(datediff(day,'2006-08-20',sendate)) 语法无错。如:
    create table #t(sendate smalldatetime)insert into #t select '2006-08-01'
    insert into #t select '2006-08-06'
    insert into #t select '2006-08-15'
    insert into #t select '2006-08-19'
    insert into #t select '2006-08-20'
    insert into #t select '2006-08-21'select * from #tdeclare @dt smalldatetimeset @dt='2006-08-20'select top 1 * 
    from #t
    order by abs(datediff(day,'2006-08-20',sendate)) drop table #t
      

  5.   

    是这样报syntax error 的错误?你用的是不是sql server?
      

  6.   

    我是把SQL语句内镶到PB里面用的啊...难道这样不行吗?但是其他的SQL语句都可以的啊
      

  7.   

    只要你连的是SQL Server,就应该没有问题。可能你前台连接时代码有问题。
      

  8.   

    其他数据库可能不支持abs、datediff函数,或者day参数的表示方法不同,或者参数不同
      

  9.   

    还是不对啊,我用的是SQL2000的,应该说可以的啊...而且用其他SQL语句蛮顺手的..