我试图选择createDt在过去两周内的所有项目。我试过这段代码,但它不起作用。T-SQL中的相对日期范围
SELECT * FROM dbo.mytable
WHERE CreateDt > dateadd(d,-15,CreateDt)
有人能告诉我这样做的正确方法吗?
我试图选择createDt在过去两周内的所有项目。我试过这段代码,但它不起作用。T-SQL中的相对日期范围
SELECT * FROM dbo.mytable
WHERE CreateDt > dateadd(d,-15,CreateDt)
有人能告诉我这样做的正确方法吗?
WHERE CreateDt > dateadd(d,-15,CreateDt)
应该
WHERE CreateDt > dateadd(d,-15,getdate())
推测。
全部NOT NULL
CreateDt
的值将满足您当前的条件,因为您将该列与其自己的值减去15天 - 而不是当前日期和时间之前的15天进行比较。
“Where createdate>(createdate - 2 weeks)”?我不这么认为;)
试试这个:
... where createdate > dateadd (d, -15, getdate())
你检查,看看是否CreateDt是之前本身大于15天。我猜你会获得比预期更多的记录。
我会做这样的事情(为便于阅读,主要)
Declare @CheckDate DateTime
Set @CheckDate = dateadd(d, -15, GetDate())
SELECT [Columns] from dbo.mytable WHERE CreateDt > @CheckDate
须─记得打电话给你的columns-不要使用“SELECT *”在正常情况下。
我相信这是你想要的。
SELECT * FROM dbo.mytable
WHERE CreateDt > dateadd(wk,-2,getdate()) AND
CreateDt < getdate() -- possible bad data
你能详细说明它是如何工作的吗?另外,你为什么使用15而不是14天? – 2012-01-10 16:28:47