Select records only with availability dates in future
Let’s say that we have some posts, movies, files or other items that should be visible to end user in two situations:
- when availability date is not set (equals
0000-00-00 00:00:00) or - when availability date s higher that current date?
Here is how.
Quickest solution:
SELECT * FROM `contents` WHERE
(
availability_date = "0000-00-00 00:00:00"
OR
TIMESTAMPDIFF(MINUTE, NOW(), availability_date) >= 0
);
This will “hide” (not select) any record, which availability_date is current time (in minutes, but you can of course change that) or at least one minute into future. Any record which availability_date is at least one minute “older” than current time will not be selected.
If you wish to exclude also records that have availability_date equal current time (NOW()) then simply change >= operator into >.
Read more in MySQL manual — TIMESTAMPDIFF() function.