I have the a sql table payments
with the following columns:
x
id|name|amount|reference_number|payment_date|status
And here is some values
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
Now I need to fetch select the data based on payment_date
and status
where sometimes the payment_date
can be a range or the same date.
Scenario 1:
SELECT *
FROM payments
WHERE payment_date >= '2019-02-21' AND payment_date <= '2019-02-21' AND status='confirmed'
ORDER BY id DESC
Should return:
1|John Doe|10.00|123456G|2019-02-21 08:00:21|confirmed
Screnario 2:
SELECT *
FROM payments
WHERE payment_date >= '2019-02-21' AND payment_date <= '2019-02-23' AND status='confirmed'
ORDER BY id DESC
Should return:
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
Any work around this?
Advertisement
Answer
As @strawberry suggested use time as well with date to fetch the data
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