У меня есть следующий запрос, который должен вернуть 3 строки, однако он не возвращает ни одной.Тем не менее, если я выполню второй запрос, я получу нужные 3 строки.
Может кто-нибудь объяснить, почему первый запрос не возвращает ожидаемый набор результатов?Даже если я удаляю преобразование, оно все равно делает то же самое.
3 строки должны быть 2019-06-18, 2019-06-06, 2019-06-17 Это возвращает ноль строк на основе текущей даты (2019-06-10)
(
CONVERT(VARCHAR(10), Bill.InvoiceDate, 103) <= CONVERT(VARCHAR(10), DATEADD(DAY, -21, GETDATE()), 103)
AND
CONVERT(VARCHAR(10), Bill.InvoiceDate, 103) >= CONVERT(VARCHAR(10), DATEADD(DAY, -41, GETDATE()), 103)
)
Это также дает ноль строк
(
Bill.InvoiceDate <= DATEADD(DAY, -21, GETDATE())
AND
Bill.InvoiceDate >= DATEADD(DAY, -41, GETDATE())
)
Возвращает 3 строки, показанные выше
(
Bill.InvoiceDate <= (GETDATE()-21)
AND
Bill.InvoiceDate >= (GETDATE()-41)
)
Основываясь на комментарии Сами, ясделали ниже, и они возвращаются с тем же результатом
SELECT GETDATE()-21, DATEADD(DAY, -21, GETDATE())
| No column name | No column name |
|-------------------------|-------------------------|
| 2019-06-19 09:52:23.240 | 2019-06-19 09:52:23.240 |