我正在使用此查询来生成博客存档菜单,如下所示:
SELECT CONCAT( MONTHNAME(published) , ' ' , YEAR(published)) AS monthyear,
COUNT(*) AS total
FROM blog_articles
WHERE status = 'Online' AND Year(published) = 2012
GROUP BY CONCAT( MONTHNAME(published) , ' ' , YEAR(published))
预期结果:
January 2012 103
February 2012 87
March 2012 23
April 2012 99
实际结果:
计数是正确的,但不是东方精神,它应该是:
May 2012 1
我怎样才能摆脱有趣的角色而改用英语?
当我在 phpMyAdmin 中运行此查询时,字符很好。
更新
我刚刚尝试运行 conn.Execute("SET lc_time_names = 'en_US';") 并没有解决问题。为了检查,我使用了 conn.Execute("SELECT @@lc_time_names;") 它返回了“en_US”。
另一个更新
在 MySQL 论坛上搜索相关问题时,我发现另一个人抱怨同样的问题。MySQL 大师说:
“这是著名的(臭名昭著的)服务器为数字和字符串的 CONCAT 返回错误的类型。必须使用(强制转换)形式才能工作,驱动程序无法分辨真正的类型是什么。”
我不确定演员表是什么或如何解决这个问题。