2017-03-03 17 views
-4

SELECT *、DATEDIFF(COLUMN_DATE、CURDATE())< 0 THEN ELSE 1 0 END、デフSQLクエリのため

をdiffをCASE BY差分FROM TABLE_GAMES ORDER AS現在の日付に関連する日付。 COLUMN_DATEの形式はyyyy-mm-ddです。何らかの理由で、上記のクエリは、私がSQLのフィドルにしたいのと同じように動作しますが、Android Studioでは動作しません。あなたのcolumn_date場合

"SELECT *、DATEDIFFは(" + "は、CURDATE()などから差分+ COLUMN_DATE) "+ TABLE_GAMES +

+0

何が問題ですか? – Reimeus

+0

その連結の結果は有効なSQLではありません。結果のSQL文を調べましたか?また、その違いによる並べ替えは、「COLUMN_DATE」の値による並べ替えと同じであることをご存知ですか? –

+0

私は現在、リストビューから自分のSQLデータベースにアクセスし、日付順に並べています。同様に、SELECT * FROM TABLE_GAMES WHERE COLUMN_SPORT_TYPE = "basketball" ORDER BY COLUMN_DATE ;.これはうまくいきますが、私は現在、現在の日付との相対的な日付を注文しようとしています。現在の1月1日の方法は、現在の日付に最も近いものではなく、常にリストビューの最初のものです。 – ethan

答えて

0

" CASE BY ORDERは、THEN 1つのELSE 0 END、差分を< 0をdiffをWHEN"このクエリを使用するDATE形式である:

SELECT * 
FROM TABLE_GAMES 
ORDER BY column_date DESC 

あなたcolumn_dateがvarchar型である場合は、DATE形式に変換する必要があります。何らかの理由で列の日付がDATEに変換されていない場合、このクエリは実行されません。

SELECT * 
FROM TABLE_GAMES 
ORDER BY 
CONVERT(DateTime, column_date,112) DESC 

DATEフォーマット

101 mm/dd/yy 
111 yy/mm/dd 
112 yyymmdd 

あなたの要件ごとに異なりCONVERTを使用する必要があります。

+0

私は私の元の質問を編集した、私は人々がそれを誤解したと思う。 – ethan

関連する問題