Сравнение действующих дат в SQL - PullRequest
1 голос
/ 22 августа 2008

Хотите знать, почему в предложении WHERE лучше выбирать записи, когда вам нужно посмотреть эффективные даты начала и окончания?

В настоящее время я так делал в MS SQL Server. Просто беспокоюсь о дате, а не о времени. Я использую SQL Server 2005.

AND Convert(datetime, Convert(char(10), ep.EffectiveStartDate, 101))
   <= Convert(datetime, Convert(char(10), GetDate(), 101))
AND Convert(datetime, Convert(char(10), ep.EffectiveEndDate, 101))
   >= Convert(datetime, Convert(char(10), GetDate(), 101))

Ответы [ 5 ]

1 голос
/ 22 августа 2008

@ Даррен Копп - вы можете использовать

set @date2 = '20201001'

это позволит вам потерять состав.

footndale - вы можете использовать арифметику даты, чтобы удалить время Что-то вроде

select dateadd(d, datediff(d, 0, CURRENT_TIMESTAMP), 0)

чтобы получить сегодняшнюю дату (без времени). Я считаю, что это более эффективно, чем разыгрывать взад-вперед.

1 голос
/ 22 августа 2008

Это ужасно, взгляните на Только в базе данных вы можете получить 1000% + улучшение, изменив несколько строк кода , чтобы увидеть, как вы можете оптимизировать это, так как это не саркастично

Также проверьте Получить дату и время без времени и Оптимизация запросов с датами

0 голосов
/ 26 января 2011
AND DateDiff(Day, 0, GetDate()) + 1 > ep.EffectiveStartDate
AND DateDiff(Day, 0, GetDate()) < ep.EffectiveEndDate

Я думаю, вы обнаружите, что эти условия обеспечивают наилучшую возможную производительность. Это с радостью будет использовать индексы.

Я также очень уверен, что это правильно и даст правильные данные. Дальнейший расчет дат без временных отрезков не требуется.

0 голосов
/ 22 августа 2008

@ Даррен Копп

Будьте осторожны с МЕЖДУ, посмотрите Как работает работа с датами в SQL Server?

0 голосов
/ 22 августа 2008

1001 * попробовать *

ep.EffectiveStartDate BETWEEN @date1 AND @date2

, где вы будете делать что-то вроде

declare @date1 datetime, @date2 datetime;  
set @date1 = cast('10/1/2000' as datetime)  
set @date2 = cast('10/1/2020' as datetime)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...