Подтвердить что ты не робот

Использование MySQL DATE_ADD, 5-дневный интервал

Я пытаюсь выбрать общую сумму заказа ($) и счет-фактуру за 5-дневный период в одном запросе. Хотя я не могу понять, что это произойдет. Текущий запрос у меня есть...

SELECT
    COUNT(id) as invoice_count,
    SUM(orderTotal) as orders_sum,
    UNIX_TIMESTAMP(created) as created
FROM ids_invoice
WHERE DATE_ADD(created, INTERVAL +1 DAY)
AND userId = 23 LIMIT 5'

Я не совсем уверен, что DATE_ADD - это правильная функция, которую я ищу.

В настоящее время я получаю....

Array ( 
    [0] => Array ( 
        [invoice_count] => 420
        [orders_total] => 97902.90
        [created] => 1252596560
    )
)

Array ( 
    [0] => Array ( 
        [invoice_count] => 68
        [orders_total] => 14193.20
        [created] => 1262900809
    )
)

Я хотел бы получить что-то большее...

Array ( 
    [0] => Array ( 
        [invoice_count] => 18
        [orders_total] => 4902.90
        [date] => 04-19-2010
    )
)

Array ( 
    [0] => Array ( 
        [invoice_count] => 12
        [orders_total] => 5193.20
        [date] => 04-20-2010
    )
)

Я новичок в функциях date mysql, поэтому, возможно, я просто пропустил функцию, которая мне нужна при просмотре документов mysql.

UPDATE Я обновил свой запрос... Это все равно не тянет строку за каждый день, на который были выставлены счета. Он только вытягивает счета-фактуры с 19-го, когда есть счета-фактуры с 20-го, которые соответствуют критериям userId.

SELECT
    COUNT(id) as invoice_count,
    SUM(orderTotal) as orders_sum,
    UNIX_TIMESTAMP(created) as created
FROM ids_invoice
WHERE
    created BETWEEN "2010-04-19 00:00:00" AND DATE_ADD("2010-04-19 00:00:00", INTERVAL +5 DAY) AND
    userId = 17
4b9b3361

Ответ 1

Чтобы получить записи между диапазоном дат, используйте:

WHERE created BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 5 DAY)

В этом примере вы получите записи (при условии, что они существуют на сегодняшний день, включая время) между сегодняшним днем ​​и днями в будущем. Посмотрите на DATE_SUB, если вы хотите уйти в прошлое.

Ответ 2

Если ваш созданный тип столбца - int, просто попробуйте этот

created<= UNIX_TIMESTAMP(DATE_ADD(CURDATE(),INTERVAL 5 DAY))')

Ответ 3

WHERE created <= NOW() AND created >=NOW() - INTERVAL 5 DAY

или было бы лучше сравнить только DATE-часть datetime:

WHERE DATE(created) <= date(NOW()) AND 
  DATE(created) >= DATE(NOW() - INTERVAL 5 DAY)