для MySQL смотрите функции работы с датами и
CASE WHEN
DATETIME приводите к DATE и через CASE WHEN определяете
SELECT
id,
dt,
CASE DATE(dt)
WHEN CURDATE() THEN 'Сегодня'
WHEN CURDATE() + INTERVAL -1 DAY THEN 'Вчера'
ELSE 'Ранее'
END AS when_day
FROM items
;
см.
пример
для PHP аналогично, смотрите
switch case и
DateTime для работы объектом, который представляет дату и / или время и методы для манипуляции с ними.
$now = new DateTime(); // текущая дата
switch ($DATEPOSTED) { // в формате Y m d
case $now->format("Y m d"):
echo "сегодня";
break;
case ((clone $now)->modify("yesterday"))->format('Y m d'):
echo "вчера";
break;
default:
echo "ранее";
}
PS: здесь (clone $now) я клонирую $now, чтобы не изменять основную переменную, если обернуть в функцию то это не обязательно, см. пример ниже.
см. полный
пример
UPDATE:
касательно кода в стилистике автора
$DATEPOSTED = strtotime("-1 day");
здесь
вчерашний день задается неверно!
во-первых,
strtotime - Преобразует текстовое представление даты на английском языке в метку времени Unix
во-вторых, время Unix (timestamp) не совпадает с форматом заданным выше и в $now -
Y m d, поэтому
сравнивать их некорректно, необходимо приводить дату к одному формату
Y m d
$DATEPOSTED = date('Y m d', strtotime(' -1 day'));
далее по условию, если необходимо просто сравнивать с сегодня и что не сегодня то это вчера, то условие вообще банальное:
if ($now == $DATEPOSTED) {