そのテーブルのログファイルに使用されるMysqlテーブルがあり、「log_date」というフィールドがあり、次の形式で日付を保存します(%Y-%m-%d%H:%i。%s ).DBでは、日付は2013-20-05 00:00.00のように見えます。今日の日付が2013-20-05で、2013-01-01から現在までのログファイルがあるとします。このようなクエリを実行すると:
SELECT * FROM log_table
WHERE STR_TO_DATE(log_date, '%Y-%m-%d %H:%i.%s') < '2013-05-05 00:00.00'
これは、2013-05-05 00:00.00より大きい行を含むDBのすべての行を返しています
そして、次のようなクエリで<(より小さい)を>(より大きい)に逆変換すると、
SELECT * FROM log_table
WHERE STR_TO_DATE(log_date, '%Y-%m-%d %H:%i.%s') > '2013-05-05 00:00.00'
次に、ゼロ行を返します。タイムスタンプは、DateTime形式ではなく、以前の日付形式で作業した問題の原因であると思います。なんでこんなことが起こっているの?
log_dateはDateTimeデータ型である必要があります。 MySQL DATE関数を使用する方がはるかに簡単です。いくつかの例
SELECT * FROM log_table
WHERE DATE(log_date) < '2013-05-05'
SELECT * FROM log_table
WHERE DATE(log_date) > '2013-05-05'
SELECT * FROM log_table
WHERE DATE(log_date) BETWEEN '2013-04-05' AND '2013-05-05'
SELECT * FROM log_table
WHERE DATE(log_date) BETWEEN DATE(CURRENT_DATE() - INTERVAL 2 WEEK) AND
DATE(CURRENT_DATE() + INTERVAL 4 DAY)
試してみてください。
WHERE DATE_FORMAT(AUCTION_DATE, '%Y%m%d') >= DATE_FORMAT('2013/5/18', '%Y%m%d')
now()関数を使用して今日の日付を取得することもできます。