我有一个包含USERID和TIMESTAMP列的表。 TIMESTAMP列是UNIX时间戳值。
我希望从前一天TIMESTAMP所在的表中获取随机记录。我希望记录只是昨天而不是之前和之后。
我怎么能用MySQL做到这一点?
我尝试了以下操作,看起来不像预期的那样工作。我在做什么傻事?
select * from mytable
where time < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 day))
and time > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 2 day))
PS:我没有在上面的SQL
中包含随机性条件答案 0 :(得分:2)
您可以使用DATE_SUB
来代替DATEDIFF
,而只考虑日期部分并忽略时间部分:
SELECT *
FROM mytable
WHERE DATEDIFF(NOW(), FROM_UNIXTIME(time)) = 1
从这里开始,生成单个随机记录很容易:
SELECT *
FROM mytable
WHERE DATEDIFF(NOW(), FROM_UNIXTIME(time)) = 1
ORDER BY RAND()
LIMIT 1