2017-04-24 5 views
2

テーブルにデータを表示しようとしています。
1 2017-:として今日の日付2017年4月24日 結果 - が、そのテーブル内のデータは、現在の日付からCodeigniter MYSQLで今後の予定日を最初に表示するクエリ

例をさかのぼり2.Past
を昇順
1.来るべき未来の日付を次の順序で表示する必要があります4月26日
2 2017年4月28日
3 2017年5月3日
4 2017年8月24日
5 2016年6月26日

私のクエリがある -

$this->db->select('*')->from('dnms_domains'); 
    $this->db->where('is_status',0); 
    $this->db->order_by('IF(expiry_date <=DATE(NOW()), 0, 1), expiry_date DESC'); 
    $query = $this->db->get(); 
    //echo($this->db->last_query()); 
     //exit;  
    return $query->result(); 

しかし、私は期待した結果を得られませんでした。

enter image description here

答えて

2

作業するクエリは、テストされ、確認:

$query = $this->db->query('select *, DATEDIFF(expiry_date, CURRENT_DATE) as diff, 
    DATEDIFF(expiry_date, CURRENT_DATE) >= 0 as di 
    from dmns_domains order by di desc, 
    case when di = 1 then -1 * diff 
     else diff 
    end desc'); 

return $query->result(); 

インデント読みやすくするためのコード、あなたはそれを1行実行するために作成する必要があります。

説明:列の値は、現在の日付

よりも大きい場合

  • 現在の日付と列の値の間の日差、
  • :2つの余分な列を追加しましたこれらの指標を使用して値をソートしました。

+0

あなたのコードを試しました。 (SELECT * FROM dnms_domainsどこのexpiry_date> = DATE(NOW())AND is_status = 0 ORDER BY expiry_date ASC)UNION(SELECT * FROM dnms_domainsどこのexpiry_date

+0

もこれを試しています。エラー番号:1096 テーブルが使用されていません SELECT * –

+0

「SELECT *」ではなく特定の列で試しましたか? –

関連する問題