Попытка выполнить запрос 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
Это потому, что вы используете DATE(NOW())
вместо NOW()
. Это отбрасывает время суток, поэтому он вычитает 2 часа с начала дня (т.е. Возвращается на 10 вечера в предыдущий день), а не на 2 часа до этого.
AND ('placed_ts' BETWEEN
DATE_SUB(DATE(NOW()), INTERVAL 3 DAY)
AND DATE_SUB(NOW(), INTERVAL 2 HOUR))
GROUP BY
без агрегирования?
GROUP BY
без каких-либо функций агрегирования, таких какCOUNT()
илиSUM()
? Результаты будут получены из непредсказуемых строк во всех строках с одинаковымcart_id
.