我对下面的行为感到困惑。为什么第一条SELECT
语句返回 1 而第二条语句返回 0?我希望它们都返回 1 因为日期大于或等于文字。
为什么排序规则会影响日期比较?在将日期与文字进行比较时,将日期(或日期时间)表示为字符串是否错误?如果是这样,我应该如何进行日期与文字比较?
mysql> 创建数据库测试; 查询正常,1 行受影响(0.00 秒) mysql> 使用测试; mysql> 设置名称 utf8 整理 utf8_general_ci; 查询正常,0 行受影响(0.00 秒) mysql> 创建表 foo ( 酒吧日期不为空 ) 引擎=InnoDB 默认字符集=utf8 排序=utf8_unicode_ci; 查询正常,0 行受影响(0.15 秒) mysql> INSERT INTO foo (bar) VALUES ('2013-01-01'); 查询正常,1 行受影响(0.00 秒) mysql> SELECT COUNT(*) FROM WHERE bar >= '2013-01-01 00:00:00'; +----------+ | 计数(*) | +----------+ | 1 | +----------+ 一组中的 1 行(0.00 秒) mysql> 设置名称 utf8 整理 utf8_unicode_ci; 查询正常,0 行受影响(0.00 秒) mysql> SELECT COUNT(*) FROM WHERE bar >= '2013-01-01 00:00:00'; +----------+ | 计数(*) | +----------+ | 0 | +----------+ 一组中的 1 行(0.00 秒)