比如:
字段
2010-11-21 6:00:00
2010-11-22 6:00:00
2010-11-22 8:00:00

我想要查询在 6:00 - 8:00最早的一条记录,取出第一条

解决方案 »

  1.   

    select top 1 *
    from ...
    where f between '2010-11-22 6:00:00' and '2010-11-22 8:00:00'
    order by f
      

  2.   


    select top 1 * from tbname where dtime between '2010-11-21 6:00:00' and '2010-11-22 8:00:00' order by dtime
      

  3.   

    select top 1 * from 表 where DateDiff(d,getdate(),你时间字段)==0 order by 时间字段 desc
      

  4.   

    select top 1 * from 表 where 字段1>2010-11-22 6:00:00 and 字段1<2010-11-22 8:00:00
    order by 字段1 desc思路是这样的,我这个写法是比较死的写法,你拿过去用时可能会有小的改动或都你自己照这个思路写一个更好的sql!!
      

  5.   

    select top 1 日期 from 表 where 
    日期 >= ( CONVERT(varchar(100), GETDATE(), 23) + ' 06:00:00')
    and 
    日期 <= ( CONVERT(varchar(100), GETDATE(), 23) + ' 08:00:00')
    order by 日期
      

  6.   

    你直接获取时间里的“小时”<=8 ,>=6不就行了,改一下上面的,你的意思是不按日期吧,只按小时来,上面其实给出了好的模版,你改一下就行了
      

  7.   

    select top 1 * from 表 where DateDiff(d,getdate(),你时间字段)=0 order by 时间字段 desc
      

  8.   


    你要查询当天   小时时间段  最早的一条记录?其实语法都是对的    你把上面朋友的写法改一下就是了    
    2010-11-21 6:00:00  c#里 改成 DateTime.now.tostring('yyyy-MM-dd')+" 6:00:00"   作为一个变量 写到sql里就行了
      

  9.   

    select top 1 * from TempBuy_Customers where DateDiff(d,getdate(),starttime)=0 order by starttime desc
    我运行又没错!
      

  10.   

    select top 1 * from 表 日期字段1 between  convert(datetime,'" + StrDateBegin + "')" and convert(datetime,'" + StrDateEnd + "')"  order by 日期字段1 desc
    楼主的意思估计是要把这条语句放到程序里面吧,应该就是这样写的
      

  11.   

    select * from 表 where 日期 >=( CONVERT(varchar(100), GETDATE(), 23) + ' 06:00:00') and 日期 <= ( CONVERT(varchar(100), GETDATE(), 23) + ' 08:00:00') order by cast(日期 as datetime) asc
      

  12.   

    select top 1 * from 表 日期字段1 between convert(datetime,'" + StrDateBegin + "')" and convert(datetime,'" + StrDateEnd + "')" order by 日期字段1 desc
      

  13.   

    select top 1 * from 表 日期字段1 between convert(datetime,'" + StrDateBegin + "')" and convert(datetime,'" + StrDateEnd + "')" order by 日期字段1 desc
      

  14.   

    SELECT TOP 1 create_time FROM dbo.bk_masterWHERE DATEDIFF(HOUR,create_time,'2007-08-21 18:00')>0
    AND  DATEDIFF(HOUR,create_time,'2007-08-21 10:00')<0ORDER BY create_time
      

  15.   

    用的sql2005数据库
    我的目的是先比较日期,在比较时间,时间要精确到 小时、分钟
      

  16.   


    小时的。
    SELECT TOP 1 create_time FROM dbo.bk_masterWHERE DATEDIFF(HOUR,create_time,'2007-08-21 18:00')>0
    AND  DATEDIFF(HOUR,create_time,'2007-08-21 10:00')<0ORDER BY create_time分钟的。SELECT TOP 1 create_time FROM dbo.bk_masterWHERE DATEDIFF(minute,create_time,'2007-08-21 18:00')>0
    AND  DATEDIFF(minute,create_time,'2007-08-21 10:00')<0ORDER BY create_time
    用DATEDIFF函数就可以了
      

  17.   


    查询出来,拿到标识ID,按照ID更新
      

  18.   

    select min(date) from tablename
      

  19.   

    http://blog.csdn.net/xianfajushi/archive/2009/09/19/4570876.aspx
      

  20.   

    我总结一下,查询当天一条记录是没有问题,但是更新的时候,我只想更新第一条,但总是所有的数据 要么一起更新,要么都不更新,最。。那个的  要么所有更新的值 都变成 NULL ,
      

  21.   


    你既然能查询出来一条记录   还不能针对查询的第一条记录进行更新吗? 怎么会更新所有记录?update t set aa='aa',bb='bb' where id=(select top 1 id from t where 你日期判断语句)  不就行了?
      

  22.   


    declare @myID int
    select top 1 @myID=ID from tbname where dtime between '2010-11-21 6:00:00' and '2010-11-22 8:00:00' order by dtimeupdate tbname set *=* where ID = @myID
      

  23.   

    问题就出在,查询的是一条记录,而更新的是所有的,你还没有明白我的意思
    asp.net项目里边不能用sql变量传值的方式, 还有没有什么其他的方法。
      

  24.   

    本人有一个超级群:102550065,可以加500个人。希望大家一起探讨ASP,C#等技术。愿意加的都进来。此群才开通,还没有什么人。
      

  25.   

    select top 1 from info where DateDiff(dd,datetime,getdate())=0  and    
    between '2010-11-22 6:00:00' and '2010-11-22 8:00:00'
      

  26.   

    我把这个问题说清楚一点:
      1.6-8点查询当天第一天记录,并且只记录最早的一条,其他不记录,
      2.查询后只更新第一条查询到的数据,比如:状态+1
      3.但是新表中如果没有数据,而我又想让状态每天循环递增:状态+=1, 新表中在没有数据的情况下,状态值就是 NULL,数据表达式 NULL+1 是不成立的,
      
       所以不知道该怎么办才好
      
      

  27.   


    暈。这个问题还在纠结。1.
    SELECT TOP 1 id FROM dbo.bk_masterWHERE DATEDIFF(HOUR,create_time,'2007-08-21 06:00')>0
    AND DATEDIFF(HOUR,create_time,'2007-08-21 08:00')<0ORDER BY create_time
    2. update bk_master set status=isnull(staus,0)+1 where id in (SELECT TOP 1 id FROM dbo.bk_masterWHERE DATEDIFF(HOUR,create_time,'2007-08-21 06:00')>0
    AND DATEDIFF(HOUR,create_time,'2007-08-21 08:00')<0ORDER BY create_time)3 先判断新表是否有数据。
    没有可以赋值0,如果一定要null,那么相加的时候用status=isnull(staus,0)+1来相加。
    1.
      

  28.   


    create table #t
    (
    id int not null primary key identity(1,1),
    dt datetime not null
    )
    /*
    2010-11-22 6:00:00
    2010-11-21 6:00:00
    2010-11-22 8:00:00
    2010-11-23 5:00:00
    */insert into #t
    values
    ('2010-11-22 6:00:00'),
    ('2010-11-21 6:00:00'),
    ('2010-11-22 8:00:00'),
    ('2010-11-23 5:00:00')select top 1 * from 
    (
    select * from #t
    where CAST(CONVERT(varchar(8),dt,114) as time) between '6:00:00' and '8:00:00'
    ) as t
    order by t.dt ascdrop table #t楼主,在回答这个是对是错的时候,请先把代码放到sql中运行一下看看结果,如果不是你要的结果,可以举例说出失败的测试数据。以方便进行修改。
      

  29.   

    我用的是sql server 2008中的,有些功能是特有的,比如insert 那边。所以,你需要修改一下。有错误的地方,可以在这里回复,也可以给我留言。
      

  30.   

    SELECT 32-DAY(getdate()+32-DAY(getdate()))