T-SQL中的相对日期范围

时间:2012-01-10 16:26:55

标签: sql tsql

我正在尝试选择createDt在过去两周内的所有项目。我已经尝试过这段代码,但它不起作用。

SELECT * FROM dbo.mytable
WHERE CreateDt > dateadd(d,-15,CreateDt)

有人可以告诉我这样做的正确方法吗?

4 个答案:

答案 0 :(得分:9)

WHERE CreateDt > dateadd(d,-15,CreateDt)

应该是

WHERE CreateDt > dateadd(d,-15,getdate())

据推测。

NOT NULL的所有CreateDt值都将满足您当前的条件,因为您要将该列与其自身值相比减去15天 - 而不是当前日期和时间之前的15天。

答案 1 :(得分:2)

“创建地点>(创建 - 2周)”?我不这么认为;)

试试这个:

... where createdate > dateadd (d, -15, getdate())

答案 2 :(得分:2)

您正在检查CreateDt是否超过15天。我猜你的记录比你预期的多得多。

我会做这样的事情(为了可读性,主要是)

Declare @CheckDate DateTime
Set @CheckDate = dateadd(d, -15, GetDate())

SELECT [Columns] from dbo.mytable WHERE CreateDt > @CheckDate

另外 - 记得要调出你的专栏 - 在正常情况下不要使用“SELECT *”。

答案 3 :(得分:2)

我相信这就是你想要的。

SELECT * FROM dbo.mytable
WHERE CreateDt > dateadd(wk,-2,getdate()) AND
      CreateDt < getdate() -- possible bad data