Laravel按日期排序,null-date总是在最后

时间:2018-05-14 07:32:46

标签: mysql laravel sorting date eloquent

我必须在我的日期字段send_date上排序,但NULL send_dates总是在最后。

我试过这个,但这不起作用:

Order::orderBy(\DB::raw('ISNULL(send_date), send_date'), 'asc')
->orderBy('send_date', 'desc') 

如何对send_date进行排序,最后始终为空?

3 个答案:

答案 0 :(得分:1)

只需在列名前使用-minus符号即可。

Order::orderByRaw("-start_date",'DESC'); 

它会命令在最后对空值进行排序。

希望这有帮助。

答案 1 :(得分:1)

你可以这样做:

Order::orderBy(\DB::raw("COALESCE(d, '9999-12-31')", 'ASC');

这是有效的,因为如果日期为NULL,则认为是9999-12-31根据answer是最大可能日期

注意:这仅在您对ASC进行排序时才有效,但是如果您对DESC进行排序,那么无论如何都是NULL。

the docs

答案 2 :(得分:0)

Order::orderBy("start_date",'DESC');

我认为这会有所帮助