MySQL中日期比较中遇到的编码问题的解决方案
复制代码代码如下所示:
MySQL >选择date_format('2013-11-19 ','y-m-d ')> timediff('2013-11-19 ','2013-11-20);
错误1267(hy000):非法的混合排序规则(utf8_general_ci,强制)和(latin1_swedish_ci,数值)的操作>
乍一看,这是很费解的。
复制代码代码如下所示:
用于日和月的名称和缩写的语言是缩写,使用了9.7。
的date_format()返回一个字符集和整理,设置字符串,它也被称为以下三个方面。
也就是说,对date_formate结果()与字符集/检查设置属性函数返回,而timediff()函数没有字符集/检查设置属性。让我们核实一下。
复制代码代码如下所示:
MySQL > SET NAMES UTF8;
>选择MySQL字符集(date_format('2013-11-19 ','y-m-d ')),字符集(timediff('2013-11-19 ','2013-11-20 '));
-------------------------------------------- ----------------------------------------------- + + +
|字符集(date_format('2013-11-19 ','y-m-d ')字符集(timediff)|('2013-11-19 ','2013-11-20)|)
-------------------------------------------- ----------------------------------------------- + + +
| UTF8 |二进制|
-------------------------------------------- ----------------------------------------------- + + +
MySQL >集名称GB2312;
>选择MySQL字符集(date_format('2013-11-19 ','y-m-d ')),字符集(timediff('2013-11-19 ','2013-11-20 '));
-------------------------------------------- ----------------------------------------------- + + +
|字符集(date_format('2013-11-19 ','y-m-d ')字符集(timediff)|('2013-11-19 ','2013-11-20)|)
-------------------------------------------- ----------------------------------------------- + + +
| GB2312 |二进制|
-------------------------------------------- ----------------------------------------------- + + +
可以看出,随着character_set_connection通过设置值collation_connection修改,对date_format结果集()函数也不同。在这种情况下,如果你想正常工作,您需要将结果转换为一个字符集,例如:
复制代码代码如下所示:
MySQL >选择date_format('2013-11-19 ','y-m-d ')>转换(timediff('2013-11-19 ','2013-11-20)使用UTF8);
---------------------------------------------------------------------------------------------- + +
| date_format('2013-11-19 ','y-m-d ')>转换(timediff('2013-11-19 ','2013-11-20)使用UTF8)|
---------------------------------------------------------------------------------------------- + +
1 | |
---------------------------------------------------------------------------------------------- + +
没关系.
P.S,MySQL版本:5.5.20-55-log Percona Server(GPL),释放rel24.1,修订217