mysql代码显示错误数据的问题

时间:2013-07-28 18:09:28

标签: php mysql date time

我有一个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: Post Times

实际上它不应该在2013-07-24 02:53:38之后显示日期。 FROM_UNIXTIME中的日期是使用php中的strtotime()使用上一个查询的最后一个值生成的。

2 个答案:

答案 0 :(得分:3)

ANDOR更难绑定,因此您的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