私はPHPのPDO
を使用してクエリするUnixのタイムスタンプ形式の日付を持つSQLiteテーブルを持っています。私は日付範囲に応じて行をマークしたいと思います。私の場合は、冬の学期か年の夏の学期かにかかわらずです。PDO:SQLite BETWEENでの結果が異なります
開始日と終了日は任意ですが、私の場合、私は9月14日(0914)3月1日(0301)など start
とend
を選んだので、私は簡単に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();
ここで起こっていると私はそれをどのように修正することができますか?どんな助けもありがとうございます。 PDOStatement::executeの
完璧に動作します!私はそれが型と何か関係があると思っていましたが、bindValueを考えたことはありませんでした。 – oelna