-1

私はテーブルを持っています:

select Name, TimeStamp from Goods

商品を午後 9 時から午後 9 時までの日付でグループ化したいので、結果は次のようになります。

Closes, Count, 2013-01-18 9PM 
Bikes, Count, 2013-01-18 9PM

どうやってするの?

24 時間単位でデータを受け取りたいのですが、各期間は午後 9 時から始まり、翌日の午後 9 時に終了しますが、1 日だけでなく、結果が次のようになる可能性があることを意味します: 2013-01-17 9PM 3 レコード、 2013-01-18 21:00 5 レコード。1 月 17 日の午後 9 時から午後 9 時までに 3 つの商品を販売したことになります。情報をより詳細にする必要がある場合はお知らせください。

別の説明:

ここに画像の説明を入力

結果は次のようになります。

Jamper1, 2013-01-17 21:00, 1
Jamper2, 2013-01-17 21:00, 1
Jamper1, 2013-01-18 21:00, 2
Jamper2, 2013-01-18 21:00, 2
4

3 に答える 3

0

12 時間の「名前」の合計数を表示するとします。時間帯が午前 9 時から午後 9 時までであることが既にわかっている場合でも、なぜ時間を表示する必要があるのでしょうか。

select name, sum(name) as total, date_format(timestamp, '%Y-%m-%d %l%p') as time
from goods where hour(timestamp) between 9 and 21
group by name

これがあなたの望むものではない場合、私たちがお手伝いできるように、例のテーブルでより具体的にしてください.

于 2013-01-18T16:40:36.037 に答える
0

タイムスタンプがdatetime.

select name, count(*), min(timestamp)
from goods
group by cast((timestamp + 3.0/24) as date)

グループ化のために、タイムスタンプに 3 時間を追加します。3 番目の列は、データの最小タイム スタンプです。

あなたのフォーマットにもっと何かが欲しいなら。. .

select name, count(*), cast(cast(timestamp + 3.0/24 as date) as datetime) + 21.0/24

これにより、質問に午後 9 時の時間が表示されます。

于 2013-01-18T16:12:59.080 に答える
0

最終的に私はそれを行う方法を考え出しました:

select Name, count(*), DATEADD(DD, 0, DATEDIFF(DD, 0, dateadd(hour, 3, [TimeStamp])))
from Goods
group by Name, DATEADD(DD, 0, DATEDIFF(DD, 0, dateadd(hour, 3, [TimeStamp])))

それがあなたにとっても役立つことを願っています。

于 2013-01-18T17:33:31.143 に答える