同じ問題を抱えているいくつかの投稿を読みました。私は彼らの答えを適応させようとしましたが、成功しませんでした。ステータスごとに列をさらにソートするよりも、ステータスで列をソートしたい。以下のクエリで私の主張が明確になるかもしれません
SELECT a.*,STR_TO_DATE(d_date, "%m/%d/%Y")>CURDATE() as status
FROM table AS a ORDER BY status DESC,
IF(status=0,
'DATEDIFF(STR_TO_DATE( a.d_date, "%m/%d/%Y" ),CURDATE()) DESC',
'DATEDIFF(STR_TO_DATE( a.d_date, "%m/%d/%Y" ),CURDATE()) ASC')
更新: 以下のクエリの後
SELECT a . * , STR_TO_DATE( d_date, "%m/%d/%Y" ) > CURDATE( ) AS
STATUS
FROM `table` AS a
ORDER BY STATUS DESC , IF(
STATUS =0, DATEDIFF( STR_TO_DATE( a.d_date, "%m/%d/%Y" ) , CURDATE( ) ) DESC , DATEDIFF( STR_TO_DATE( a.d_date, "%m/%d/%Y" ) , CURDATE( ) ) ASC )
LIMIT 0 , 30
以下のエラーが発生しました
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DESC, DATEDIFF(STR_TO_DATE( a.d_date, "%m/%d/%Y" ),CURDATE()) ASC) LIMIT ' at line 4
私のテーブル名がtable
これよりも
d_date
06/28/2012
06/23/2012
06/20/2012
06/19/2012
現在の日付が06/21/2012
出力は
d_date status
06/23/2012 1
06/28/2012 1
06/20/2012 0
06/19/2012 0
この情報で十分です。まだはっきりしていない場合はお知らせください。
ありがとう