激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫 - Mysql - MySQL中日期比較時遇到的編碼問題解決辦法

MySQL中日期比較時遇到的編碼問題解決辦法

2020-04-12 15:15junjie Mysql

這篇文章主要介紹了MySQL中日期比較時遇到的字符集問題解決辦法,本文遇到的問題是date_format函數(shù)和timediff函數(shù)之間比較時,編碼問題導(dǎo)致出錯,本文使用convert()函數(shù)解決了這個問題,需要的朋友可以參考下

今天幫同事處理一個SQL(簡化過后的)執(zhí)行報錯:

復(fù)制代碼 代碼如下:


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 '>'


乍一看挺莫名其妙的,查了下手冊,發(fā)現(xiàn)有這么一段:

復(fù)制代碼 代碼如下:


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() 函數(shù)返回的結(jié)果是帶有字符集/校驗集屬性的,而 TIMEDIFF() 函數(shù)則沒有字符集/校驗集屬性,我們來驗證一下:

復(fù)制代碼 代碼如下:


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                                        |
+--------------------------------------------+-----------------------------------------------+


可以看到,隨著通過 SET NAMES 修改 character_set_connection、collation_connection  值,DATE_FORMAT() 函數(shù)返回結(jié)果的字符集也跟著不一樣。在這種情況下,想要正常工作,就需要將結(jié)果進(jìn)行一次字符集轉(zhuǎn)換,例如:

復(fù)制代碼 代碼如下:

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 |
+----------------------------------------------------------------------------------------------+


就可以了

 

P.S,MySQL的版本:5.5.20-55-log Percona Server (GPL), Release rel24.1, Revision 217

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久欧美亚洲另类专区91大神 | 欧美女优一区 | 日韩精品久久久 | 极品大长腿啪啪高潮露脸 | 国产精品久久久av | 春光影院理论片 | 久久国产精品小视频 | 2021国产精品 | 96视频在线免费观看 | 91在线视频福利 | 在线看一级片 | 中文字幕在线不卡视频 | v11av在线播放 | 怦然心动50免费完整版 | 97zyz成人免费视频 | 国产一区二区三区高清 | 免费日本一区二区 | 国产成人综合在线观看 | 久色精品| 美女视频在线观看黄 | 天天看天天摸天天操 | 毛片免费在线观看视频 | 欧美一级一区二区三区 | china对白普通话xxxx | 亚洲精品 在线播放 | 石原莉奈日韩一区二区三区 | 91精品国产综合久久久欧美 | 久久精品视频4 | 久草干 | 精品一区二区三区中文字幕 | 万圣街在线观看免费完整版 | 毛片免费看电影 | 久久精品a一级国产免视看成人 | 91高清完整版在线观看 | 羞羞视频免费观看入口 | 久久久久久久一区二区三区 | 国产精品啪一品二区三区粉嫩 | 午夜爽爽爽男女免费观看hd | 久久96国产精品久久久 | 最近高清无吗免费看 | 色啪综合 |