Как проверить диапазон дат в SQL?

голоса
0

Я хотел бы запросить базу данных , чтобы проверить , если дата находится в пределах двух дат. Существует дата и конечная дата начала. По сути, я хотел бы, чтобы отобразить значения с помощью BETWEENключевого слова.

Я хотел бы , формат даты , чтобы соответствовать , а также. Скажи @date1это20150520

DECLARE @startdate DATE
DECLARE @enddate DATE
DECLARE @date1 DATE
DECLARE @finaldate VARCHAR(1)

SET @startdate = DATEADD(DAY, -5, GETDATE())
SET @enddate = GETDATE()
SET @date1 = '20150520'



SELECT record FROM table1
WHERE @date1 < @enddate AND @date1 > @startdate

Это, кажется, имеет смысл. Хотя, когда я пытаюсь использовать IF условно я получаю NULL, используя этот код:

IF @date1 > @startdate AND @date1 < @enddate
BEGIN
SET @finaldate = '1'
END
ELSE IF @date1 > @enddate
BEGIN
SET @finaldate = '2'
END

SELECT @finaldate AS Final_Date

Хотя по какой - то причине, @finaldateприравнивает к NULL ... который не то , что я ожидал бы от условной ветви.

Задан 14/05/2015 в 17:56
пользователем
На других языках...                            


1 ответов

голоса
0

Вам нужна дополнительная ветвь на том, что условно, если вы охватить все ваши базы:

ELSE IF @date1 <= @startdate

Вы тестировался только на 1) между двумя датами и 2) больше, чем в последний день. По крайней мере один из них должен включать в себя проверку равенства, а также, или же, если ваша дата равно не будет совпадать.

Теперь, вы могли бы пойти с простым старым ELSE блоком в конце, чтобы все успеть, но я подозреваю , что вы на самом деле ищете что - то вроде:

IF @date1 > @startdate AND @date1 < @enddate
    BEGIN
        SET @finaldate = '1'
    END
ELSE IF @date1 >= @enddate
    BEGIN
        SET @finaldate = '2'
    END
ELSE IF @date1 <= @startdate
    BEGIN
        SET @finaldate = '3'
    END

SELECT @finaldate AS Final_Date
Ответил 14/05/2015 в 18:03
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more