Код: Выделить всё
SELECT *
FROM your_table
WHERE CASE
WHEN CURTIME() BETWEEN '11:01:00' AND '15:00:00' THEN created_at BETWEEN CONCAT(CURDATE(), ' 11:01:00') AND CONCAT(CURDATE(), ' 15:00:00')
WHEN CURTIME() BETWEEN '15:01:00' AND '17:00:00' THEN created_at BETWEEN CONCAT(CURDATE(), ' 15:01:00') AND CONCAT(CURDATE(), ' 17:00:00')
ELSE created_at BETWEEN CONCAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), ' 17:01:00') AND CONCAT(CURDATE(), ' 11:00:00')
END;
Код: Выделить всё
SELECT *
FROM your_table
WHERE created_at BETWEEN
(
CASE
WHEN CURTIME() BETWEEN '11:01:00' AND '15:00:00' THEN CONCAT(CURDATE(), ' 11:01:00')
WHEN CURTIME() BETWEEN '15:01:00' AND '17:00:00' THEN CONCAT(CURDATE(), ' 15:01:00')
ELSE CONCAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), ' 17:01:00')
END
)
AND
(
CASE
WHEN CURTIME() BETWEEN '11:01:00' AND '15:00:00' THEN CONCAT(CURDATE(), ' 15:00:00')
WHEN CURTIME() BETWEEN '15:01:00' AND '17:00:00' THEN CONCAT(CURDATE(), ' 17:00:00')
ELSE CONCAT(CURDATE(), ' 11:00:00')
END
);
В первый я могу добавить все операторы, которые хочу, а не только созданный_at, например, добавив AND user_id = 1.
Может кто-нибудь объяснить, почему второй лучше.>
Подробнее здесь: https://stackoverflow.com/questions/798 ... ere-clause
Мобильная версия