【发布时间】:2017-08-10 22:46:18
【问题描述】:
我有一个带有 unix 时间戳格式日期的 SQLite 表,我通过 PHP PDO 查询该表。我想根据日期范围标记行,在我的情况下,日期是在一年中的冬季学期还是夏季学期。
开始和结束日期是任意的,但就我而言,我选择了
start 是 3 月 1 日 (0301),end 是 9 月 14 日 (0914),所以我可以很容易地与 BETWEEN 联系。
当我在 PHP 中运行这个查询时,像这样,它返回一个不正确的结果("WS" 对于所有行):
$statement = $db->prepare('SELECT CASE WHEN
(CAST(strftime("%m%d", class_date, "unixepoch") AS DECIMAL)
BETWEEN :start AND :end)
THEN "SS"
ELSE "WS" END
AS semester FROM dates');
$statement->execute(array(
':start' => 301,
':end' => 915
));
但是当我将开始和结束日期嵌入为数字时,而不是绑定它们,它可以正常工作(一些行"WS",一些行"SS"):
$statement = $db->prepare('SELECT CASE WHEN
(CAST(strftime("%m%d", class_date, "unixepoch") AS DECIMAL)
BETWEEN 301 AND 915)
THEN "SS"
ELSE "WS" END
AS semester FROM dates');
$statement->execute();
这里发生了什么,我该如何解决?任何帮助表示赞赏。
【问题讨论】: