• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > MySQL中DATE_FORMATE函数使用时的注意点

MySQL中DATE_FORMATE函数使用时的注意点

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了mysql date formate,mysql data formate,simpledateformate,date formate,hive date formate等相关知识,希望本文的分享对您有所帮助

今天帮同事处理一个SQL(简化过后的)执行报错:

mysql> select date_format('2013-11-19','Y-m-d') > timediff('2013-11-19', '2013-11-20');                     

ERROR 1267 (HY000): Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,NUMERIC) for operation '>'

</div>

乍一看挺莫名其妙的,查了下手册,发现有这么一段:

The language used for day and month names and abbreviations is controlled by the value of the lc_time_names system variable (Section 9.7, “MySQL Server Locale Support”).

The DATE_FORMAT() returns a string with a character set and collation given by character_set_connection and collation_connection so that it can return month and weekday names containing non-ASCII characters.

也就是说,DATE_FORMATE() 函数返回的结果是带有字符集/校验集属性的,而 TIMEDIFF() 函数则没有字符集/校验集属性,我们来验证一下:

mysql> set names utf8;
mysql> select charset(date_format('2013-11-19','Y-m-d')), charset(timediff('2013-11-19', '2013-11-20'));
+--------------------------------------------+-----------------------------------------------+
| charset(date_format('2013-11-19','Y-m-d')) | charset(timediff('2013-11-19', '2013-11-20')) |
+--------------------------------------------+-----------------------------------------------+
| utf8                    | binary                    |
+--------------------------------------------+-----------------------------------------------+

mysql> set names gb2312;
mysql> select charset(date_format('2013-11-19','Y-m-d')), charset(timediff('2013-11-19', '2013-11-20'));
+--------------------------------------------+-----------------------------------------------+
| charset(date_format('2013-11-19','Y-m-d')) | charset(timediff('2013-11-19', '2013-11-20')) |
+--------------------------------------------+-----------------------------------------------+
| gb2312                   | binary                    |
+--------------------------------------------+-----------------------------------------------+

</div>

可以看到,随着通过 SET NAMES 修改 character_set_connection、collation_connection  值,DATE_FORMAT() 函数返回结果的字符集也跟着不一样。在这种情况下,想要正常工作,就需要将结果进行一次字符集转换,例如:

mysql> select date_format('2013-11-19','Y-m-d') > convert(timediff('2013-11-19', '2013-11-20') using utf8);
+----------------------------------------------------------------------------------------------+
| date_format('2013-11-19','Y-m-d') > convert(timediff('2013-11-19', '2013-11-20') using utf8) |
+----------------------------------------------------------------------------------------------+
|                                              1 |
+----------------------------------------------------------------------------------------------+

</div>

就可以了 :)

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MySQL中DATE_FORMATE函数使用时的注意点

相关文章

  • 2018-12-05【mysql教程】MySQL 序列使用
  • 2018-12-05sql2005 存储过程分页代码
  • 2018-12-05mybatis属性详解
  • 2018-12-05谈谈CentOS6.5_x64的现状、前景与机遇
  • 2018-12-05mysql之binlog日志以及利用binlog日志恢复数据的示例代码分享
  • 2018-12-05使用cmd命令行窗口操作SqlServer的方法
  • 2017-05-11Linux下安装Mysql多实例作为数据备份服务器实现多主到一从多实例的备份
  • 2017-05-11MYSQL基础之连接MYSQL、修改密码、添加用户
  • 2018-12-05oracle怎么删除用户提供解决方案
  • 2017-05-11php后台经常提示无法连接mysql 刷新后又可以访问的解决方法

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • MySQL中explain的使用以及性能分析
    • Mysql数据格式
    • mysql4.0升级到mysql5(4.1),解决字符集问题
    • MySQL查询优化:连接查询排序浅谈
    • 推荐10篇关于show的应用内容
    • 详解MAC中mysql密码忘记解决办法的示例代码
    • 简单的数据库权限分配教程
    • 获取缺失主键表信息的MYSQL语句
    • MySQL主从复制实战-详解基于日志点的复制代码实例
    • 学会sql数据库关系图(Petshop)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有