0

我有一个应该显示数据旧数据的 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.ini 中的 strtotime() 生成的。

4

2 回答 2

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 ) 
于 2013-07-28T18:16:58.897 回答
1

mysql没有问题..它与您提供的时间戳有关

echo $time = date("Y/m/d h:i:s ",1374634418);

它返回

2013/07/23 10:53:38 PM
于 2013-07-28T18:19:19.573 回答