SQL查询:如何计算文章发布距今的分钟数以实现投票加权排序
排序逻辑占位符填充说明
规则匹配要求
为了实现「新发布文章适当加权、同时投票数仍为核心权重」的排序效果,公式的分母位置需要获取对应文章从发布时刻到当前的间隔分钟数,才能完全匹配题目指定的得分计算逻辑:
- 发布10分钟、累计1票的文章:得分 = 1 * 720 / 10 = 72
- 发布60分钟、累计10票的文章:得分 = 10 * 720 / 60 = 120
排序时得分更高的60分钟前10票文章会排在10分钟前1票的文章之前,符合预期的权重平衡效果。
占位符具体填充值
在#####位置填入MySQL原生时间差计算函数即可:TIMESTAMPDIFF(MINUTE, date, NOW())
该函数会直接返回文章发布时间字段date与当前系统时间NOW()的间隔分钟数,无需额外做单位换算,代入公式后完全匹配计算规则。
边界场景优化
为了避免刚发布0分钟的文章出现分母为0的计算报错,可以对分母做最小保底值处理,替换写法为:GREATEST(TIMESTAMPDIFF(MINUTE, date, NOW()), 1)
强制将分母的最小值设为1,从根本上规避SQL计算异常,且不会干扰原有排序逻辑的权重关系。
内容的提问来源于stack exchange,提问作者banjax
相关产品推荐
相关产品推荐

