我有一个sql代码,它应该显示数据旧数据,但问题是它在unix时间戳之后显示数据。
这是我的sql代码:
SELECT p . *
FROM posts p
LEFT JOIN following f ON f.follower_id =1
AND p.post_user_id = f.user_id
WHERE post_user_id =1
OR f.user_id IS NOT NULL
AND post_time < FROM_UNIXTIME( 1374634418 )
ORDER BY `post_id` DESC
LIMIT 10
这是我收到的post_time:
实际上它不应该在2013-07-24 02:53:38之后显示日期。 FROM_UNIXTIME中的日期是使用php中的strtotime()使用上一个查询的最后一个值生成的。
答案 0 :(得分:3)
AND
比OR
更难绑定,因此您的WHERE条件变为;
WHERE post_user_id =1
OR (f.user_id IS NOT NULL AND post_time < FROM_UNIXTIME( 1374634418 ))
...如果post_user_id为1,则可以很好地返回较新的行。
您可能想要添加一些括号;
WHERE (post_user_id =1 OR f.user_id IS NOT NULL)
AND post_time < FROM_UNIXTIME( 1374634418 )
答案 1 :(得分:1)
mysql没有问题.. 它与您提供的时间戳有关的问题
echo $time = date("Y/m/d h:i:s ",1374634418);
它返回
2013/07/23 10:53:38 PM