MySQL TIMESTAMP МЕЖДУ 2 часа назад и 3 дня назад - PullRequest
0 голосов
/ 05 июня 2018

Пытаясь выполнить запрос MySQL на TIMESTAMP поле.

Я близок к получению правильного результата, но он всегда отстает всего на 3 дня, ничего в текущий день.Я считаю, что это как-то связано с использованием BETWEEN с полем TIMESTAMP.

SELECT
    billing_first_name,
    cart_id,
    placed_ts,
    s_email           
FROM   `orders`
WHERE `paypal_response` IS NULL
   AND `authorize_response` IS NULL
   AND `s_email` IS NOT NULL
   AND (`placed_ts` BETWEEN
        DATE_SUB(DATE(NOW()), INTERVAL 3 DAY)
        AND DATE_SUB(DATE(NOW()), INTERVAL 2 HOUR))     
GROUP BY `cart_id`
ORDER BY placed_ts DESC

1 Ответ

0 голосов
/ 05 июня 2018

Это потому, что вы используете DATE(NOW()) вместо NOW().Это отбрасывает время суток, поэтому оно вычитает 2 часа с начала дня (т. Е. Повторяет 22 часа в предыдущий день), а не 2 часа до сегодняшнего дня.

AND (`placed_ts` BETWEEN
    DATE_SUB(DATE(NOW()), INTERVAL 3 DAY)
    AND DATE_SUB(NOW(), INTERVAL 2 HOUR))     
...