0

我试图让语法显示Actual Live Date等于或大于今天 7 天的记录列表,理想情况下显示每天有多少条记录(星期四 = 7 条记录)。

我在想一些事情:

SELECT [PW Number]
  ,[status]
  ,[install Date]
  ,[ICL Client Code]
  ,[Actual Live Date]
FROM 
   [QuoteBase].[dbo].[Circuits]
WHERE 
   [Actual Live Date] BETWEEN today and 7 days time  (this is where I am a little stuck as im fairly new)
4

3 回答 3

1

如果您需要“今天”从今天早上 00:01 开始,那么您需要从 eg 中删除时间部分GETDATE()。我还使用显式函数来表明我正在添加天数:

SELECT [PW Number]
  ,[status]
  ,[install Date]
  ,[ICL Client Code]
  ,[Actual Live Date]
FROM 
   [QuoteBase].[dbo].[Circuits]
WHERE 
   [Actual Live Date] BETWEEN
        DATEADD(day,DATEDIFF(day,0,GETDATE(),0) AND
        DATEADD(day,DATEDIFF(day,0,GETDATE()+7,0)

如果Actual Live Date包含时间组件,您可能需要调整+7to +8,具体取决于结果中应包含哪些行。

于 2013-07-08T11:01:38.130 回答
0

您可以为此使用BETWEENGETDATE()函数,这GETDATE() + 7将在今天的日期上增加 7 天

SELECT [PW Number]
  ,[status]
  ,[install Date]
  ,[ICL Client Code]
  ,[Actual Live Date]
FROM 
   [QuoteBase].[dbo].[Circuits]
WHERE 
   [Actual Live Date] BETWEEN GETDATE() AND GETDATE() + 7
于 2013-07-08T10:58:43.060 回答
0

如果该列实际上是日期,则需要小心一点:

[Actual Live Date] BETWEEN cast(GETDATE() as date) and cast(GETDATE() + 6 as date)

这将包括今天。如果今天是星期一,它将包括到下星期日为止的 7 天。如果你也想要下周一,那么-6就是-7.

当列是 a时,由于时间分量,对于今天的日期date,比较[Actual Live Date] >= getdate()将始终为 false。

Between对值按预期工作,datetime但对值不按预期工作date

于 2013-07-08T11:00:28.453 回答