このクエリを使用して、次のようにブログ アーカイブ メニューを作成しています。
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 に対して間違った型を返します。これを機能させるには (キャスト) 形式を使用する必要があり、ドライバーは実際の型が何であるかを知ることができません。」
キャストとは何か、またはこの問題を修正する方法がわかりません。