Я пытаюсь выбрать полную сумму порядка ($) и количество счета за 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
)
)
Я довольно плохо знаком с mysql функциями даты поэтому, возможно, я просто пропустил функцию, в которой я нуждался при прохождении через mysql документов.
ОБНОВЛЕНИЕ я обновил свой запрос... Это все еще не вытягивает строку в течение каждого дня, что были счета на. Это только вытягивает счета от 19-го, когда существуют счета от 20-х, которые соответствуют критериям идентификатора пользователя.
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
Чтобы получить записи в промежутке между датами, используйте:
WHERE created BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 5 DAY)
В этом примере вы получите записи (при условии, что они существуют на сегодняшний день, включая время) между сегодняшним днем и днями в будущем. Посмотрите на DATE_SUB, если хотите вернуться в прошлое.
WHERE created <= NOW() AND created >=NOW() - INTERVAL 5 DAY
или было бы лучше сравнить только часть даты и времени DATE:
WHERE DATE(created) <= date(NOW()) AND
DATE(created) >= DATE(NOW() - INTERVAL 5 DAY)