0

MySQL テーブル "flightSched" は、次のように時間に関連付けられています。

flightNo    |day    |time   |arrivalTimeSec
=============================================
WERE112 |Tuesday    | 1:00  |1381186800
FGHG234 |Tuesday    |23:00  |1381266000
CGHF345 |Tuesday    |00:00  |1381183200

2 回の間にすべてのデータを選択する mysql クエリがあります。これはクエリです:

$CurrentTimeMinus30min = date('H:i', strtotime('-30 minutes')); //Current Time minus 30minutes
$CurrentTimeMinus30min = strtotime($CurrentTimeMinus30min);     

$CurrentTimePlus4Hours = date('H:i', strtotime('+240 minutes')); //Current Time plus 4 hours
$CurrentTimePlus4Hours = strtotime($CurrentTimePlus4Hours);

$query = $mysqli->query("
    SELECT * FROM flightSched 
    WHERE day = '$currentDay' 
    AND arrivalTimeSec 
        BETWEEN '$CurrentTimeMinus30min' 
        AND '$CurrentTimePlus4Hours'
");

時間値に strtotime() 関数を使用して、BETWEEN MySQL クエリで使用できるようにすることをお勧めしました。これはまったく機能していないようです。

このクエリのどこが間違っていますか? どんな助けでも大歓迎です。

4

4 に答える 4

2

今日、私はあなたと同じ問題を見つけました(座標についての私のもの)。そして、場合によっては、BETWEEN演算子はこのようにしか使用できないことがわかりました

..... WHERE columname BETWEEN smallervalue AND biggervalue

以前は、負の数を扱っていたので、前に bigvalue を試してみましたが、失敗しました。タイムスタンプで同じ問題が見つかった可能性があります。

于 2014-07-15T00:08:29.467 に答える
0

その間をカプセル化しようとしましたか?これにより、問題が解決する可能性があります。

SELECT * FROM flightSched 
WHERE day = '$currentDay' 
AND (arrivalTimeSec BETWEEN '$CurrentTimeMinus30min' AND '$CurrentTimePlus4Hours')

また、なぜしないのですか:

$CurrentTimeMinus30min = strtotime('-30 minutes');

または

$CurrentTimeMinus30min = strtotime(date('Y-m-d H:i:00', strtotime('-30 minutes')));

変数が生成するものの例をいくつかお送りください。

于 2013-10-09T09:49:45.873 に答える