2017-11-22 15 views
0

私のアプリでは、enrollDateが現在の日付よりも小さいか等しい場合、すべての行のリストを取得する必要があります。テーブルに登録日が"07/21/2017"で、現在の日付が"11/22/2017"ある 現在の日付が2ヶ月遅れて日付比較が動作しない場合

select * from master where enrollDate<='current date' 

として

私のSQLiteのクエリがあります。

現在の日付が'30/09/2017'までであればすべてがうまくいっていますが、現在の日付が"10/01/2017"から始まる場合は、リストは後で0行で返されます。

なぜ起こっているのか、それを解決する方法を教えてください。

+1

それは2011年9月30日まで有効ですが、10/01/2017から現在の日付に11/22/2017としてある場合は0行が返されます。形式は正しく –

+0

https://stackoverflow.com/a/29971871/3395198 –

答えて

0
SELECT * FROM master WHERE CAST(strftime('%s', enrollDate) AS integer) <=CAST(strftime('%s', currentDate) AS integer) ; 
+0

ありがとうございます。まだ問題は、私は07/24/2017の代わりにenrollDateの行を返すが、私はここに列名を置くenrollDateを実行すると、0行が返されます。親切に助けてください –

+0

私はあなたのテーブルのスキーマを表示できますか? –

+0

あなたの答えの説明を追加してください – Thamaraiselvam

1

実際には、日付ではなく文字列を比較しています。文字列は辞書編集で比較されます。

SQLの日付を比較するには、辞書順と時間順が同じ形式で格納することを検討してください。たとえば、ISO 8601 UTCスタンプyyyy-MM-ddまたはJavaのlongエポックミリ秒スタンプ。

関連する問題