MySQL TIMESTAMP МЕЖДУ 2 часа назад и 3 дня назад

0

Попытка выполнить запрос 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
  • 0
    Почему вы используете GROUP BY без каких-либо функций агрегирования, таких как COUNT() или SUM() ? Результаты будут получены из непредсказуемых строк во всех строках с одинаковым cart_id .
Теги:
timestamp
between

1 ответ

2
Лучший ответ

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

AND ('placed_ts' BETWEEN
    DATE_SUB(DATE(NOW()), INTERVAL 3 DAY)
    AND DATE_SUB(NOW(), INTERVAL 2 HOUR))     
  • 0
    Я думаю, что здесь больше неправильного, чем просто
  • 0
    @Strawberry Ты имеешь в виду использование GROUP BY без агрегирования?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню