我的帖子有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
我想要使用的算法是时间/喜欢。我知道它的算法不好,但我只想了解基础知识。 我想知道你是否知道好的算法
答案 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函数即时转换它,但这可能会非常慢。