我正在尝试选择createDt在过去两周内的所有项目。我已经尝试过这段代码,但它不起作用。
SELECT * FROM dbo.mytable
WHERE CreateDt > dateadd(d,-15,CreateDt)
有人可以告诉我这样做的正确方法吗?
答案 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