如何通过热门/上升的帖子订购

时间:2016-04-14 14:35:34

标签: php mysql sql sql-order-by

我的帖子有DB:

post_id(int(7)) user_id(int(7)) post_txt(text) post_time(varchar(30)) likes_count(int(10)) 

(post_time看起来像这样" 5-4-2016 17:41")

我想通过" hot posts"来订购它。例如" likes_count / post_time"

我该怎么做?

我现在就是这样做的:

$que_post=mysql_query("select * from user_post order by post_id desc"); 

PS。我知道这不是你通常喜欢的方式,但我是为了目的而做的

编辑 - 示例数据:

97||25||Hello world||8-4-2016 14:19||19

我想要使用的算法是时间/喜欢。我知道它的算法不好,但我只想了解基础知识。 我想知道你是否知道好的算法

2 个答案:

答案 0 :(得分:1)

您应该将post_time字段的类型更改为DATETIME(阅读manual)。 您必须通过某些脚本转换所有行以格式化YYYY-MM-DD HH:MM:SS。当你这样做时,一切都会奏效。

您的问题出现了按字母排序为文本的原因。例如:01.01.2016,因为文本小于31.01.1999。

答案 1 :(得分:0)

假设您可以将post_time列转换为使用日期类型,您希望找到它与现在之间的秒数,例如

Order By like_count / (unix_timestamp(now()) - unix_timestamp(post_time)) Desc;

如果不能更改列类型,可以使用str_to_date函数即时转换它,但这可能会非常慢。