Keep It Real BLOG

ソフトウェアエンジニア。1児の父。 酒、ラーメン、サッカー好き。旅行も好きですが、普段は出不精で大抵たまプラーザ界隈に居ます。

MySQLのCONVERT_TZがNULLになる

f:id:naohide_a:20151202195340j:plain DjangoのORM使用時に、date側のフィールド名__monthで、月の指定が出来るのだが、その中でCONVERT_TZを使用しており、そいつがどうも上手く動かずに苦労したので、メモ。

どうやら、自分の環境にタイムゾーン情報が入っていないことが原因らしく、以下のことで解決した。

my.cnf

sql-mode="";
default-time-zone=Asia/Tokyo

コマンド

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql

ポイントはsql-modeをオフっておくこと。 ここが最初strict modeになっていて、タイムゾーンを追加するコマンドでエラーが出て困った…。 これで、SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');などしたら、ちゃんと値が取れるようになりました。