1回のクエリで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のドキュメントを読むときに必要な関数を見逃しただけかもしれません。
[〜#〜] update [〜#〜]クエリを更新しました...これでも、請求書があった日ごとに行がプルされません。 userId条件を満たす20日からの請求書がある場合、19日からの請求書のみをプルします。
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を見てください。
作成した列タイプがintの場合は、これを試してください
created<= UNIX_TIMESTAMP(DATE_ADD(CURDATE(),INTERVAL 5 DAY))')
WHERE created <= NOW() AND created >=NOW() - INTERVAL 5 DAY
または、日時のDATE部分だけを比較することをお勧めします。
WHERE DATE(created) <= date(NOW()) AND
DATE(created) >= DATE(NOW() - INTERVAL 5 DAY)