2014-06-18 3 views
0
SELECT j.JobNo, j.JobDescription 
FROM Job j 
JOIN Job_Nav n ON j.JobNo = n.JobNo 
WHERE n.Blocked = 0 
AND n.[Starting Date] < GETDATE() AND n.[Ending Date] > GETDATE()  

Я хочу изменить и п. [Дата начала] < GETDATE() и п. [Дата окончания]> GETDATE() в BETWEEN статьи, может кто-нибудь сказать мне, как использовать Между пунктом для выражения выше. СПАСИБОКак использовать SQL BETWEEN Пункта и GetDate функции

+2

'И GetDate() между п. [Дата начала] и п. [Дата окончания] ' – Siyual

+3

Вы не можете. 'BETWEEN' работает с * включенными * конечными точками. Ваши сравнения с использованием '<' and '>' '' Исходные даты' и 'Конечная дата' * Исключительные * конечные точки. Невозможно изменить поведение «МЕЖДУ». Кстати, вы должны знать, что 'GETDATE()' включает компонент времени, который вы можете рассмотреть, если столбцы просто содержат значения даты. –

+2

@Sohail Могу ли я спросить, почему? Он отлично работает, не так ли? Поймите это, чтобы понять, какой оператор вам следует использовать http://msdn.microsoft.com/en-IN/library/ms187922(v=sql.105).aspx –

ответ

1

getdate() between n.[Starting Date] AND n.[Ending Date]

является эквивалентом

getdate() >= n.[Starting Date] and getdate() <= n.[Ending Date]

(обратите внимание, что она использует >= и <= вместо > и <)

Я предполагаю, что вы хотите использовать between, чтобы сделать ваш код немного более компактным и читаемым, но ваш код в письменной форме не является кандидатом на такую ​​замену.

+0

Да, вы правы, я не могу использовать МЕЖДУ, и большое спасибо за такие советы. –

1

SELECT j.JobNo, j.JobDescription FROM Job j
JOIN Job_Nav n ON j.JobNo = n.JobNo WHERE n.Blocked = 0 AND GETDATE() Between n.[Starting Date] AND n.[Ending Date]

1
SELECT j.JobNo, j.JobDescription 
FROM Job j 
JOIN Job_Nav n ON j.JobNo = n.JobNo 
WHERE n.Blocked = 0 
AND getdate() between n.[Starting Date] AND n.[Ending Date] 
+0

Очень благодарен ... –

1

Не уверен, что это имеет значение для вас, но GETDATE() может потенциально вернуть ошибочный результат, поскольку функция включает время.

1

Вы не можете, как между это включено (> = < =)

BETWEEN (Transact-SQL)

Чтобы указать эксклюзивный ассортимент, используйте больше (>) и меньше операторов (<) ,

Если вам нужны эксклюзивные то, что у вас есть чистый
Я думаю, что отдельные строки легче читать

AND n.[Starting Date] < GETDATE() 
AND n.[Ending Date] > GETDATE() 
+0

Спасибо Blam за ваше информативное предложение. –

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