以下の動作に困惑しています。SELECT
最初のステートメントは 1 を返し、2 番目のステートメントは 0 を返すのはなぜですか? 日付がリテラル以上であるため、両方が 1 を返すことを期待しています。
照合が日付の比較に影響するのはなぜですか? 日付をリテラルと比較するとき、日付 (または日時) を文字列として表現するのは間違っていますか? もしそうなら、どのように日付とリテラルの比較を行うべきですか?
mysql> CREATE DATABASE テスト; クエリ OK、影響を受ける 1 行 (0.00 秒) mysql> テストを使用します。 mysql> SET NAMES utf8 COLLATE utf8_general_ci; クエリ OK、影響を受ける行は 0 (0.00 秒) mysql> CREATE TABLE foo ( バーの日付 NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; クエリ OK、影響を受ける行は 0 (0.15 秒) mysql> INSERT INTO foo (バー) 値 ('2013-01-01'); クエリ OK、影響を受ける 1 行 (0.00 秒) mysql> SELECT COUNT(*) FROM foo WHERE バー >= '2013-01-01 00:00:00'; +---------+ | | カウント(*) | +---------+ | | 1 | +---------+ セットで 1 行 (0.00 秒) mysql> SET NAMES utf8 COLLATE utf8_unicode_ci; クエリ OK、影響を受ける行は 0 (0.00 秒) mysql> SELECT COUNT(*) FROM foo WHERE バー >= '2013-01-01 00:00:00'; +---------+ | | カウント(*) | +---------+ | | 0 | +---------+ セットで 1 行 (0.00 秒)