0

ユーザーごとおよび日ごとにさまざまな値を持つ MySQL テーブルがありますが、作成されたのは UNIX タイムスタンプを持つ INT です。

id INT, AUTO_INCREMENT
users_id INT
value INT
created INT

過去 30 日間で、1 日およびユーザーごとに最大 1 つの値を選択する必要があります。それが MySQL TIMESTAMP の場合、次のようにします。SELECT * FROM table GROUP BY DAY(created)しかし、UNIX タイムスタンプでは実行できません。

現在のデータで同様のクエリを再現する方法について何か考えはありますか?

4

2 に答える 2

3

これを使って

SELECT * FROM table GROUP BY DAY(FROM_UNIXTIME(created))

于 2012-10-09T21:22:44.710 に答える
2

そのようなもの(広く燃えていますが):日だけでグループ化しないでください。過去30日間で、同じ日に2回ある可能性があります(2月...)

select 
  users_id, 
  MAX(value) --or just value if you don't mind which should be returned
FROM table
WHERE FROM_UNIXTIME(created) BETWEEN  (CURDATE() - INTERVAL 30 DAY) AND CURDATE()
GROUP BY users_id, MONTH(FROM_UNIXTIME(created)), DAY(FROM_UNIXTIME(created))
于 2012-10-09T21:30:13.663 に答える