简单的SQL语句问题,查询某天的最后一条记录

我的数据库表中一天之内会产生多条记录,请问怎么样查询某个日期的最后一条记录?
比如我要查询2011-10-25号的最后一条记录怎么写SQL语句,当然最后一条记录是哪个时间点产生的是未知的。
要是把记录全查出来再搞个循环把指针移到最后一条记录处就太麻烦了。请帮帮忙
然后把某个月中每天的最后一条记录查询出来怎么实现

Select * From 表 Where 时间 In( Select Top 1 时间 From 表 Where Convert(varchar,时间,23)='2011-10-25' Order By 时间 Desc)
如果同一时间有多条刻录,那就加上 Top 1 ,在后面再加上 Order By 时间 Desc 如:
Select Top * From 表 Where 时间 In( Select Top 1 时间 From 表 Where Convert(varchar,时间,23)='2011-10-25' Order By 时间 Desc) Order By 时间 Desc
把“时间”换成你数据库表中的时间字段即可。追问

写了这么多,谢谢,这样是可以实现的,能不能把某个月的每天的最后一条记录查出来,比如2011年9月份每天的最后一条记录,帮忙想一下,麻烦了

追答

采用循环吧:
Declare @YM varchar(7)--年月
Declare @First datetime --这个月的第一天
Declare @Last datetime --这个月的最后一天

Set @YM='2011-09'--查询的年月(查询其它年月,修改这个@YM即可)
Set @First=Convert(datetime,@YM+'-01')
Set @Last=(Select dateadd(month,1,@First)-1)

Select Top 0 date Into #Tmp From TT--建一个临时表
---开始查询每天的最后一个时间
While @First<=@Last
Begin
Insert Into #Tmp
Select Max(Date) From TT Where Convert(varchar,Date,23)=Convert(varchar,@First,23)
Set @First=@First+1
End
Select * From TT Where Date In(Select date From #Tmp)
Drop Table #Tmp

把TT换成你的表,把date换成你的时间字段,

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-10-26
把日期设成datetime类型的,这样保存的日期会精确到毫秒,然后根据日期 order by 日期 desc,这样第一条就是这个日期的最后一条追问

谢谢,这样可以实现。还有一个问题,可能会难一点,指定某个月,把这个月中每天的最后一条记录查询出来能实现吗?

第2个回答  2011-10-26
order by 不行吗追问

order by 然后 top?

追答

是的,可以吗

追问

恩,是可以的。谢谢,还有一个问题,可能会难一点,指定某个月,把这个月中每天的最后一条记录查询出来能实现吗?

追答

这个有点困难 呵呵呵

第3个回答  2011-10-26
top 1 加 降序排列 试过么
相似回答