PHP,MYSQL:按日期排序,但空日期最后不是

时间:2011-12-14 19:42:22

标签: php mysql date fetch

我从MySQL获取带有待办事项标题和截止日期的数组。我想按日期订购它,并且最老的。但有一些没有约会的待遇。这些待办事项我不想在第一个位置显示,而是在我的列表底部显示。不幸的是,MySQL把空的放在第一位。

我有什么方法可以在一个查询中 (不能使用MySQL,使用CI的ActiveRecord)。我可以对没有日期的所有待办事项运行第二个查询,并将它们放在底部。但我想在一个查询中进行 - 如果可能的话?

5 个答案:

答案 0 :(得分:33)

您可以使用ORDER BY子句在MySQL中执行此操作。先按NULL排序,然后按日期排序。

SELECT * FROM your_table ORDER BY (date_column IS NULL), date_column ASC

注意:这假设没有日期的行是NULL

答案 1 :(得分:0)

SELECT * 
  FROM table 
  ORDER BY  CASE your_date 
              WHEN '' THEN 'b' 
              ELSE 'a' 
            END,
            date ASC 

答案 2 :(得分:0)

可能在order by子句

中添加NVL( thedate, to_date('2099-12-31','yyyy-mm-dd'))

答案 3 :(得分:0)

您可以使用:

select * from my_table
order by if(isnull(my_field),1,0),my_field;

答案 4 :(得分:-1)

好吧,作为一个纯粹的MySQL答案,我可能会这样做。

  select todo.title, todo.due_date
    from todo
    order by ifnull(todo.due_date, '9999-12-31')