2013-07-08 2 views
0

Я пытаюсь получить синтаксис, чтобы показать список записей, где Actual Live Date равен или больше, чем сегодня, на 7 дней и в идеале показать, сколько в день (четверг = 7 записей).Выбор записей, где «ActualLiveDate» находится между сегодняшним днем ​​и X дней в будущем с SQL Server

я думал что-то вдоль линий:

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) 

ответ

1

Если вам нужно «сегодня», чтобы начать в 00:01 этим утром, вам необходимо удалить временную часть, например. 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 содержит компонент времени, вы можете настроить +7 к +8, в зависимости от того, какие именно строки должны быть включены в результат или нет.

+0

Я принимаю это как наилучшее подходящее для моей цели, поскольку он дает мне следующие 7 дней, включая сегодня Thank You – MoiD101

0

вы можете использовать функции BETWEEN и GETDATE() для этого 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 
0

Если столбец на самом деле является датой, вам нужно быть осторожным:

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

Это будет включать в себя сегодня. Если сегодня понедельник, он будет включать семь дней до следующего воскресенья. Если вы захотите и в следующий понедельник, то -6 будет -7.

Если столбец date, сравнение [Actual Live Date] >= getdate() всегда будет ложным для сегодняшних дат из-за компонента времени.

Between работает, как ожидается, для значений datetime, но не для значений date.

Смежные вопросы