我有一个MySQL表,每个用户和每天都有不同的值,但创建的是带有unix时间戳的INT:
id INT, AUTO_INCREMENT
users_id INT
value INT
created INT
我需要在过去30天内每天和每位用户选择最多一个值。如果它是一个MySQL TIMESTAMP,我会做类似的事情:SELECT * FROM table GROUP BY DAY(created)
但我不能用UNIX时间戳来做。
关于如何使用当前数据重现类似查询的任何想法?
答案 0 :(得分:3)
使用此
SELECT * FROM table GROUP BY DAY(FROM_UNIXTIME(created))
答案 1 :(得分:2)
类似的东西(广泛烧毁,但是):不要仅按天分组,在过去30天内,你可能在同一天有两次(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))