我正在尝试使用ORDER BY
日期按以下顺序从我的表中获取记录:
TODAY (9 PM)
TODAY (7 PM)
TODAY (9 AM)
TODAY (7 AM)
PAST (3 DAYS AGO)
PAST (2 DAYS AGO)
PAST (1 DAYS AGO)
FUTURE (IN 1 DAY)
FUTURE (IN 2 DAYS)
FUTURE (IN 3 DAYS)
目前我正在使用:
SELECT *
FROM my_table
ORDER BY
IF(DATE(my_date) = DATE(NOW()), 0, 1) ASC,
IF(DATE(my_date) < DATE(NOW()), 0, 1) ASC,
my_date ASC
但这给了我:
TODAY (7 AM) - WRONG
TODAY (9 AM) - WRONG
TODAY (7 PM) - WRONG
TODAY (9 PM) - WRONG
PAST (3 DAYS AGO)
PAST (2 DAYS AGO)
PAST (1 DAYS AGO)
FUTURE (IN 1 DAY)
FUTURE (IN 2 DAYS)
FUTURE (IN 3 DAYS)
我尝试使用以下方法更改“今天”排序DESC
:
IF(DATE(my_date) = DATE(NOW()), 0, 1) DESC,
但随后它只是将记录发送到最底层(甚至低于未来的结果)。这是否可能仅与 SQL 有关,或者我必须使用 CodeIgniter 运行多个查询where()
并使用 PHP 合并它们?