15

単一のクエリで 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 のドキュメントを読んでいるときに必要な関数を見逃してしまったのかもしれません。

更新 クエリを更新しました...これでも、請求書があった日ごとに行が取得されません。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
4

3 に答える 3

25

日付範囲間のレコードを取得するには、次を使用します。

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

この例では、今日から数日先までのレコード (時刻を含め、今日のものが存在すると仮定) を取得します。過去に行きたい場合は、DATE_SUB を見てください。

于 2010-04-21T16:05:29.490 に答える
1
WHERE created <= NOW() AND created >=NOW() - INTERVAL 5 DAY

または、datetime の DATE 部分だけを比較することをお勧めします。

WHERE DATE(created) <= date(NOW()) AND 
  DATE(created) >= DATE(NOW() - INTERVAL 5 DAY)
于 2010-04-21T16:03:53.313 に答える