我想按照日期和受欢迎程度分数来订购我的SQL语句......
select *
from results
order by date(create_date) DESC, popularity DESC
上面的日期功能会删除小时/分钟 - 因此它按天排序,而且最受欢迎,但我真正希望实现的是基于2天的窗口订购。
有什么方法可以将日期分为48小时吗?像这样......
2016-03-30 13:18:04 = 2016-03-30
2016-03-31 13:18:04 = 2016-03-30
2016-04-01 13:18:04 = 2016-04-01
2016-04-02 13:18:04 = 2016-04-01
或许或许我在考虑这个错误,并且有更合理的方法吗?!谢谢你的任何想法。
答案 0 :(得分:1)
您可以分别按year
,month
,day
订购,只需为day
添加一个小计算。
试试这个:
select *
from results
order by
YEAR(create_date) DESC,
MONTH(create_date) DESC,
FLOOR(DAY(create_date)/2.0) DESC,
popularity DESC
答案 1 :(得分:1)
使用unix时间戳,可以很容易地将其舍入到任意秒数(此处为172800,持续2天);
SELECT *
FROM results
ORDER BY UNIX_TIMESTAMP(date) DIV 172800 DESC, popularity DESC