SQL DateTime类型问题

时间:2010-09-16 08:37:58

标签: tsql sql-server-2008

我正在使用SQL Server 2008 Enterprise。我有一个名为Foo的表,它有一个名为MyTime的DateTime类型列。我想找到其MyTime列值已超过3天(从当前时间开始经过)的所有记录(行)。如何实现这个?

提前谢谢, 乔治

5 个答案:

答案 0 :(得分:3)

WHERE myTime < DATEADD(dd,-3,getDate())

答案 1 :(得分:3)

如果你有很多行,你可能想要删除每行表达式,所以首先找出你寻找的日期,然后进行比较:

DECLARE @DateExpired DATETIME
SET @DateExpired = GETDATE() - 3
SELECT * 
FROM Foo
WHERE MyTime < @DateExpired

答案 2 :(得分:1)

datediff(d,GetDate(),MyTime)&gt; 3

select * from table
  where datediff(d,GetDate(),MyTime) > 3

编辑:反过来说:P

答案 3 :(得分:1)

您可以使用DATEADD(日期部分,数字,日期)进行计算:

SELECT * FROM Foo WHERE MyTime > DATEADD(dd, -3, MyTime)

答案 4 :(得分:1)

create table #foo
(
MyTime dateTime
)

Insert Into #foo
Values ('2010-09-15')
Insert Into #foo
Values ('2010-09-14')
Insert Into #foo
Values ('2010-09-13') 
Insert Into #foo
Values ('2010-09-12')


Select * FRom #foo
Where DateAdd(day, 3, MyTime) <= '2010-09-16'

drop table #foo