我有一个 SQLite 表,其中包含三个名为 day、start_time 和 end_time 的列。我添加了 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() 时间,但仍然无法让它工作。是否有一种方法可以在语句中使用单引号来传递时间,或者我是否做错了其他事情,这应该允许我在没有它们的情况下进行选择。也许甚至是更有效的方法?
我对数据库比较陌生,我花了几个小时来玩它。很可能有一个简单的答案。我只是没有它......任何指针将不胜感激。