LoginSignup
180

More than 5 years have passed since last update.

RDS(MySQL)でJSTを使う たった1つの冴えたやり方

Last updated at Posted at 2014-05-30

RDS(MySQL)でJSTを使う たった1つの冴えたやり方

RDS(MySQL)のシステム標準設定はUTCかつ変更不可能

$ date
2014年 5月30日 金曜日 20時56分02秒 JST
$ echo 'select now()' | mysql -h mysql.foobar.ap-northeast-1.rds.amazonaws.com -u admin -p 
Enter password: 
now()
2014-05-30 11:56:20

アンチパターン

init_connect に "SET SESSION time_zone = 'Asia/Tokyo';"と書く

→フェイルオーバー時にハマる (rdsadminユーザなどではTimezoneがUTCでないとダメ)

ストアドプロシージャを入れて init_connect から呼ぶ

例)

IF NOT (POSITION(‘rdsadmin@’ IN CURRENT_USER()) = 1) THEN
SET SESSION time_zone = ‘Asia/Tokyo’;
END IF

→ ストアド入れる前にパラメータグループ適用しちゃったりとかでハマる

おそらく一番簡単なやり方

下記をinit_connectに設定する

SET SESSION time_zone = CASE WHEN POSITION('rds' IN CURRENT_USER()) = 1 THEN 'UTC' ELSE 'Asia/Tokyo' END;

rdsで始まるユーザ名であった場合UTCを、そうでない場合には日本時間に設定
適用後)

$ date
2014年 5月30日 金曜日 21時04分48秒 JST
$ echo 'select now()' | mysql -h mysql.foobar.ap-northeast-1.rds.amazonaws.com -u admin -p 
Enter password: 
now()
2014-05-30 21:04:57

日本時間になりました!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
180