Я пытаюсь экспортировать список сведений об участниках, срок действия которых истекает после 2019 года.

|name  |expiry    |
|------|----------|
|arthur|2010-01-01|
|ben   |2018-05-17|
|craig |2005-12-30|
|dean  |2021-09-02|

Так что я только после

|name  |expiry    |
|------|----------|
|dean  |2021-09-02|

Я думал, что могу просто использовать дату в предложении WHERE

SELECT name, expiry
FROM table
WHERE expiry < GETDATE()
AND expiry >= '2019-01-01'

Однако он по-прежнему возвращает другие записи и не уверен, почему

0
DrPaulVella 4 Фев 2022 в 04:24
1
Какой механизм базы данных вы используете? И что такое тип данных столбца истечения срока действия?
 – 
ex4
4 Фев 2022 в 04:26
1
2018-05-17 до 2019 года, а не после 2019 года
 – 
navylover
4 Фев 2022 в 04:28
'2018-05-17' раньше, чем '2019-01-01' ... почему вы ожидаете, что в вашем выводе будет прежняя дата?
 – 
Tim Biegeleisen
4 Фев 2022 в 04:29
Извините, опечатка. истечение срока действия - это тип данных даты
 – 
DrPaulVella
4 Фев 2022 в 04:30
Каков результат, когда вы попробовали код?
 – 
Sangkeun Park
4 Фев 2022 в 04:32

2 ответа

Запрос должен работать так, как вы хотите. Вероятно, проблема вызвана тем, что столбец срока действия по какой-то причине не имеет типа Дата. Это может привести к нежелательному поведению.

0
Revox 4 Фев 2022 в 04:52

Предполагая, что вы используете SQL Server:

SELECT name, expiry
FROM tmp
WHERE expiry < GETDATE()
AND expiry >= CONVERT(DATE, '2019-01-01', 102) 

dbfiddle

0
a801a28cb4b6e70a 4 Фев 2022 в 05:10