day、start_time、end_time という 3 つの列を持つ SQLite テーブルがあります。HH:MM の形式で時刻を追加し、時間ストレージに関する SQLite の推奨事項に従って、タイプを TEXT に設定しました。時間を検索しようとすると問題が発生します...
try {
$stmt = $dbh->prepare('SELECT * FROM lesson WHERE day = :day AND start_time <= :time AND end_time >= :time');
$stmt->execute(array('day' => $day, 'time' => $time));
$result_arr = $stmt->fetch(PDO::FETCH_ASSOC);
if(empty($result_arr)) {
return 'No lessons found';
}
else {
return $result_arr;
}
}
以上で、日のみの検索は問題ないのですが、時間になると問題が発生します。以下のステートメントでは、あるべきときに結果が返されませんか?
SELECT * FROM "lesson" WHERE day = 3 AND start_time <= 10:52 AND end_time >= 10:52
私は直接SQLステートメントをいじってみましたが、結果を返すように選択することしかできませんでした。それは、時間を単一引用符で囲むことでした。
SELECT * FROM "lesson" WHERE day = 3 AND start_time <= '10:52' AND end_time >= '10:52'
次に、その時間を strval() しようとしましたが、まだ機能しません。ステートメント内で一重引用符を使用して時間を渡す方法はありますか、またはそれらなしで選択できるようにするために何か間違ったことをしていますか? たぶんもっと効率的な方法でしょうか?
私はデータベースに比較的慣れていないので、何時間もデータベースをいじっています。おそらく簡単な答えがあります。私はそれを持っていません...どんなポインタでも大歓迎です。