select top 1 * from ... where f between '2010-11-22 6:00:00' and '2010-11-22 8:00:00' order by f
select top 1 * from tbname where dtime between '2010-11-21 6:00:00' and '2010-11-22 8:00:00' order by dtime
select top 1 * from 表 where DateDiff(d,getdate(),你时间字段)==0 order by 时间字段 desc
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!!
select top 1 日期 from 表 where 日期 >= ( CONVERT(varchar(100), GETDATE(), 23) + ' 06:00:00') and 日期 <= ( CONVERT(varchar(100), GETDATE(), 23) + ' 08:00:00') order by 日期
select top 1 * from TempBuy_Customers where DateDiff(d,getdate(),starttime)=0 order by starttime desc 我运行又没错!
select top 1 * from 表 日期字段1 between convert(datetime,'" + StrDateBegin + "')" and convert(datetime,'" + StrDateEnd + "')" order by 日期字段1 desc 楼主的意思估计是要把这条语句放到程序里面吧,应该就是这样写的
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
select top 1 * from 表 日期字段1 between convert(datetime,'" + StrDateBegin + "')" and convert(datetime,'" + StrDateEnd + "')" order by 日期字段1 desc
select top 1 * from 表 日期字段1 between convert(datetime,'" + StrDateBegin + "')" and convert(datetime,'" + StrDateEnd + "')" order by 日期字段1 desc
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
用的sql2005数据库 我的目的是先比较日期,在比较时间,时间要精确到 小时、分钟
小时的。 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函数就可以了
你既然能查询出来一条记录 还不能针对查询的第一条记录进行更新吗? 怎么会更新所有记录?update t set aa='aa',bb='bb' where id=(select top 1 id from t where 你日期判断语句) 不就行了?
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
暈。这个问题还在纠结。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.
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中运行一下看看结果,如果不是你要的结果,可以举例说出失败的测试数据。以方便进行修改。
我用的是sql server 2008中的,有些功能是特有的,比如insert 那边。所以,你需要修改一下。有错误的地方,可以在这里回复,也可以给我留言。
from ...
where f between '2010-11-22 6:00:00' and '2010-11-22 8:00:00'
order by f
select top 1 * from tbname where dtime between '2010-11-21 6:00:00' and '2010-11-22 8:00:00' order by dtime
order by 字段1 desc思路是这样的,我这个写法是比较死的写法,你拿过去用时可能会有小的改动或都你自己照这个思路写一个更好的sql!!
日期 >= ( CONVERT(varchar(100), GETDATE(), 23) + ' 06:00:00')
and
日期 <= ( CONVERT(varchar(100), GETDATE(), 23) + ' 08:00:00')
order by 日期
你要查询当天 小时时间段 最早的一条记录?其实语法都是对的 你把上面朋友的写法改一下就是了
2010-11-21 6:00:00 c#里 改成 DateTime.now.tostring('yyyy-MM-dd')+" 6:00:00" 作为一个变量 写到sql里就行了
我运行又没错!
楼主的意思估计是要把这条语句放到程序里面吧,应该就是这样写的
AND DATEDIFF(HOUR,create_time,'2007-08-21 10:00')<0ORDER BY create_time
我的目的是先比较日期,在比较时间,时间要精确到 小时、分钟
小时的。
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函数就可以了
查询出来,拿到标识ID,按照ID更新
你既然能查询出来一条记录 还不能针对查询的第一条记录进行更新吗? 怎么会更新所有记录?update t set aa='aa',bb='bb' where id=(select top 1 id from t where 你日期判断语句) 不就行了?
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
asp.net项目里边不能用sql变量传值的方式, 还有没有什么其他的方法。
between '2010-11-22 6:00:00' and '2010-11-22 8:00:00'
1.6-8点查询当天第一天记录,并且只记录最早的一条,其他不记录,
2.查询后只更新第一条查询到的数据,比如:状态+1
3.但是新表中如果没有数据,而我又想让状态每天循环递增:状态+=1, 新表中在没有数据的情况下,状态值就是 NULL,数据表达式 NULL+1 是不成立的,
所以不知道该怎么办才好
暈。这个问题还在纠结。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.
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中运行一下看看结果,如果不是你要的结果,可以举例说出失败的测试数据。以方便进行修改。