我有以下设置的MySQL 服务器版本:5.0.77 MySQL客户端版本:5.0.41 协议版本:10 MySQL charset:UTF-8 Unicode(utf8) MySQL连接排序规则:utf8_unicode_ci
我只是在做一个简单的查询而且返回错误 SELECT * FROM table1 WHERE mydate> ='2010-08-30'
今天是8/30,我有1行mydate是'2010-06-01'并且该行被选中。为什么? 如果我这样做,它会返回零记录,这是正确的 SELECT * FROM table1 WHERE mydate> = NOW()
第一个查询在本地但没有实时服务器中正确执行。
如何对此进行故障排除?是因为MySQL版本,时间设置,服务器设置不同......我在寻找什么?
感谢。
答案 0 :(得分:1)
在MYSQL中,您不应该在日期周围使用单引号,这会导致MYSQL服务器将您的条目解释为字符串而不是日期。我还建议在数据库中的日期条目周围使用date(),以确保它确实是一个日期。
以下是我将如何在MYSQL中执行上述查询的示例:
SELECT * FROM table1 WHERE date(mydate) >= (2010-08-30)
此查询应返回您想要的结果。
答案 1 :(得分:0)
这可能是MySQL中的一个错误的表现,该错误已在版本> = 5.0.50中修复。我相信只有在日期列上有索引时才会出现错误。
有关详细信息,请参阅此bug report。
这可能不是您遇到的错误,但是很可能您的问题的根本原因很可能是MySQL错误已在一个版本中修复但在其他版本中未修复。我建议您将数据库的两个版本放在一起。