舍入mysql日期为2天

时间:2016-04-03 14:34:15

标签: mysql date

我想按照日期和受欢迎程度分数来订购我的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
或许或许我在考虑这个错误,并且有更合理的方法吗?!谢谢你的任何想法。

2 个答案:

答案 0 :(得分:1)

您可以分别按yearmonthday订购,只需为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

A quick SQLfiddle for testing

相关问题