SQL выбирает данные между определенной датой и дополнительным полевым фильтром - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть таблица sql payments со следующими столбцами:

id|name|amount|reference_number|payment_date|status

А вот некоторые значения

1|John Doe|10.00|123456G|2019-02-21 08:00:21|confirmed
2|John Doe|10.00|FHFHgJJ|2019-02-21 10:05:50|pending
3|John Doe|10.00|57GHHFG|2019-02-22 12:10:32|pending
4|John Doe|10.00|GHTYNHJ|2019-02-22 09:52:26|confirmed
5|John Doe|10.00|123G456|2019-02-23 12:22:45|confirmed
6|John Doe|10.00|J123456|2019-02-23 13:00:21|pending

Теперь мне нужно выбрать данные, основанные наpayment_date и status, где иногда payment_date может быть диапазоном или одной и той же датой.

Сценарий 1:

SELECT * 
FROM payments 
WHERE payment_date >= '2019-02-21' AND payment_date <= '2019-02-21' AND status='confirmed' 
ORDER BY id DESC

Должен вернуться:

1|John Doe|10.00|123456G|2019-02-21 08:00:21|confirmed

Сценарий 2:

SELECT * 
FROM payments 
WHERE payment_date >= '2019-02-21' AND payment_date <= '2019-02-23' AND status='confirmed' 
ORDER BY id DESC

Должен вернуться:

1|John Doe|10.00|123456G|2019-02-21 08:00:21|confirmed
4|John Doe|10.00|GHTYNHJ|2019-02-22 09:52:26|confirmed
5|John Doe|10.00|123G456|2019-02-23 12:22:45|confirmed

Любая работа вокруг этого?

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

Вы можете использовать + interval 1 day в качестве даты окончания и изменить <= на <, например:

SET @startdate = '2019-02-21';
SET @enddate = '2019-02-21';

SELECT * 
FROM payments 
WHERE 
  payment_date >= @startdate 
  AND 
  payment_date < @enddate + interval 1 day
  AND 
  status='confirmed' 
ORDER BY id DESC;

См. Демоверсию

0 голосов
/ 23 февраля 2019

Поскольку @strawberry предложила использовать время и дату для получения данных

SELECT * 
FROM payments 
WHERE payment_date >= '2019-02-21 00:00:00' AND payment_date <= '2019-02-21 
23:59:59' AND status='confirmed' 
ORDER BY id DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...