0

NOW 関数が思い通りに機能しません。今日の日付を過ぎた日付を単純に見つけたいだけです。

これが私のクエリです。

SELECT * 
FROM   `trade_show_inventory` 
       LEFT JOIN `trade_show_reserved` 
              ON `trade_show_inventory`.`id` = `trade_show_reserved`.`productid` 
WHERE  `trade_show_inventory`.`quantity` > 0 
        OR `trade_show_reserved`.`datereserved` 
           + INTERVAL 5 day <= '2013-03-31' 
           AND `trade_show_reserved`.`datereserved` > Now()

編集:

クエリをこれに変更しましたが、まだ機能していません。まだそれに取り組んでいます..

    $date = date('Y-m-d');
    $sql = "SELECT * FROM `trade_show_inventory` LEFT JOIN `trade_show_reserved`
    ON `trade_show_inventory`.`ID` = `trade_show_reserved`.`ProductID`
    WHERE (`trade_show_inventory`.`Quantity` > 0)
    or (`trade_show_reserved`.`DateReserved` + INTERVAL 5 DAY <= '$setupStart' and
           `trade_show_reserved`.`DateReserved` > '2013-03-25')";
4

4 に答える 4

0

NOW() 関数はタイムスタンプを使用します。最初に必要な日付形式に変換する必要があると思います。

于 2013-03-25T20:23:15.467 に答える
0

さて、あなたのwhere句は次のように解析しています:

WHERE (`trade_show_inventory`.`Quantity` > 0) or
      (`trade_show_reserved`.`DateReserved` + INTERVAL 5 DAY <= '2013-03-25' and
       `trade_show_reserved`.`DateReserved` > NOW()
      )

日付が 2013-03-25 の 5 日前である場合、将来の日付であってはなりません (少なくとも今日の時点では)。

句を括弧で囲んで、where意図したロジックを取得します。

于 2013-03-25T20:19:29.977 に答える
0

NOW() は日付を返しません...完全なタイムスタンプです:

mysql> select NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2013-03-25 17:20:06 |
+---------------------+
1 row in set (0.00 sec)

DATE 関数をラップしてみてください。

mysql> select DATE(NOW());
+-------------+
| DATE(NOW()) |
+-------------+
| 2013-03-25  |
+-------------+
1 row in set (0.00 sec)
于 2013-03-25T20:21:37.533 に答える
0

NOW()現在の日付と時刻を返します。

DATE()時間のない日付を返すため、おそらく使用したいと思うでしょう。

于 2013-03-25T20:22:55.093 に答える