如何从datetime列中找到最旧的值?
我有一个带有datetime列(UpdateDate)的表,我需要根据UpdateDate找出最旧的数据。
Id UpdateDate Desc
-----------------------------------------
1 2010-06-15 00:00:00.000 aaaaa
2 2009-03-22 00:00:00.000 bbbbb
3 2008-01-12 00:00:00.000 ccccc
4 2008-02-12 00:00:00.000 ddddd
5 2009-04-03 00:00:00.000 eeeee
6 2010-06-12 00:00:00.000 fffff
我找出了当前日期的旧年日期
Select UpdateDate from Table1 where DATEDIFF(YEAR,UpdateDate,getdate()) > 0
查询。但我只需要找出2008年的数据(因为2008年是最古老的数据)
我不知道表中有什么我需要找出最早的日期值。它怎么可能?
答案 0 :(得分:3)
Select UpdateDate from Table1 where DATEDIFF(YEAR,PartDateCol,getdate()) IN
(Select MAX(DATEDIFF(YEAR,PartDateCol,GETDATE())) DiffYear from Table1)
这将返回2008年的两条记录。如果您的记录有2006年的日期,那么如果差异很大,则返回所有2006年的数据。
答案 1 :(得分:0)
如果您想要2008年内的数据,请尝试以下方法:
Select UpdateDate From Table1
Where Year(UpdateDate) =
(
Select Year(UpdateDate)
from Table1 Order By UpdateDate ASC Limit 1
) ;
答案 2 :(得分:0)
select top(1) UpdateDate
from Table1
order by UpdateDate
<强>更新强>
如果你想要第一年的所有行,你可以使用它。
select *
from (
select *,
rank() over(order by year(UpdateDate)) as rn
from Table1
) as T
where T.rn = 1
答案 3 :(得分:0)
这样做的一种方法是
Select UpdateDate from Table1 where YEAR(UpdateDate )=2008
但是,您可以通过订购数据来找出最早的日期
Select * from Table1 order by UpdateDate ASC