我正在使用SQL Server 2008 Enterprise。我有一个名为Foo的表,它有一个名为MyTime的DateTime类型列。我想找到其MyTime列值已超过3天(从当前时间开始经过)的所有记录(行)。如何实现这个?
提前谢谢, 乔治答案 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