0

ここでsqliteデータベースから画像とビデオを選択したいクエリを実装しますが、間違った結果が返されます現在の日付は2014-07-15ですが、2014-07-25の日付結果が間違っています。

私のクエリ:

SELECT * 
FROM myfiles 
WHERE (( Date('2014-07-15') >= startdate 
AND Date('2014-07-15') <= enddate ) 
AND ( strftime('%H:%M:%S', starttime) >= '02:09:50' 
OR  '02:09:50'  <= strftime('%H:%M:%S', endtime )) 
AND ( strftime('%H:%M:%S',timer_from) >= '02:09:50' 
OR '02:09:50' <= strftime('%H:%M:%S',timer_to )) 
OR ( strftime('%H:%M:%S',timer_from) = '00:00:00' 
OR '00:00:00' = strftime('%H:%M:%S',timer_to ))) 
AND ( Tuesday = 1 OR Everyday = 1) 
AND download = 1 
AND playlist_id = 65 
AND user_id='265' 
ORDER BY position_id ASC, subposition_id ASC 

-> この画像をダウンロードするためのリンク http://screencast.com/t/yS4SqUDqhe

Mysqlite 元のデータベース画像

ここに画像の説明を入力

クエリの実行後 クエリ の実行 イメージ

ここに画像の説明を入力

4

1 に答える 1

1

true次の部分は、日付が無効であってもチェック全体を評価します。

OR ( strftime('%H:%M:%S',timer_from) = '00:00:00' OR '00:00:00' = strftime('%H:%M:%S',timer_to ))

つまり、結果にマークされた行 (そのtimer_from = '00:00:00'timer_to = '00:00:00') が含まれていることは驚くことではありません。

更新 前述のクエリ部分で
に変更ORしてみてください。AND

更新 2 前と後
のクエリの最後に次のチェックを追加します。ORDER BY position_id ASC, subposition_id ASCAND user_id='265'

AND (Date('2014-07-25') > startdate)
于 2014-07-15T06:49:25.063 に答える