Не получается ни одной строки из запроса, но в таблице есть строки - PullRequest
0 голосов
/ 12 июля 2020
AND (
    (datediff(DAY,getdate(), '2020-07-14 00:00:00.000') = 5)
    OR (
        datediff(DAY,getdate(), A.HX_RELIEVING_DT) BETWEEN 0 AND 4
        AND '2020-04-17 20:36:53.000' >= GETDATE()-1
    )
) 

Это результат, который мне нужен для сброса даты и времени последнего обновления, но я не могу его получить

 EMPLID LOCATION    SUPERVISOR_ID    HX_RELIEVING_DT               LASTUPDDTTM
 -- SINGAPORE          ---        2020-07-14 00:00:00.000       2020-04-17 20:36:53.000

Ответы [ 2 ]

1 голос
/ 12 июля 2020

Я полагаю, вы пытались написать, если @MyDate в прошлом:

 AND ((DATEDIFF(DAY, @MyDate, GETDATE()) = 5) OR (DATEDIFF( DAY, A.HX_RELIEVING_DT, GETDATE()) BETWEEN 0 AND 4 AND DATEADD(DAY, -1, GETDATE()) <= @MyDate))

Если @MyDate в будущем:

 AND ((DATEDIFF(DAY, GETDATE(), @MyDate) = 5) OR (DATEDIFF(DAY, GETDATE(), A.HX_RELIEVING_DT) BETWEEN 0 AND 4 AND DATEADD(DAY, 1, GETDATE()) <= @MyDate))
0 голосов
/ 12 июля 2020

Последнее условие из вашего предложения WHERE в основном фильтрует вашу запись из вывода.

AND '2020-04-17 20:36:53.000' >= GETDATE()-1

Дата в месяце «апрель» не может быть больше, чем значение даты в июле, верно? Вы можете проверить значения, которые вы используете в разных условиях в предложении WHERE, с помощью этого запроса ниже. Вы получите сообщение о своей проблеме автоматически.

SELECT *,
datediff(DAY,getdate(), '2020-07-14 00:00:00.000'),
datediff(DAY,getdate(), A.HX_RELIEVING_DT),
GETDATE()-1
FROM your_table A
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...