SSブログ

useLegacyDatetimeCodeの9割はクズ

useTimezone=trueをセットすると、マイクロ秒単位の精度が失われミリ秒に丸められてしまうので、useLegacyDatetimeCode=false をセットするしかない。
frsyuki (11/15(火) 4:59)


つまり要約すると、timestamp型の値を正しくパースするには、useLegacyDatetimeCode=falseをセットするか、または useLegacyDatetimeCode=true と useTimezone=true の両方をセットしなければならないが
frsyuki (11/15(火) 4:58)


なぜならgetDefaultTimeZoneが、useLegacyDatetimeCode=false である場合は、serverTimeZoneを返すから。
frsyuki (11/15(火) 4:58)


ぁぁ違う。useLegacyDatetimeCode=false である場合は、getTimestampメソッドにおいて、型がtimestampであるとき、受け取った年月日時分秒を、time_zoneセッションパラメータでパースしている。
frsyuki (11/15(火) 4:57)


useLegacyDatetimeCode=trueの場合の挙動を見ると、やはりクライアントJVMのデフォルトタイムゾーンでパースしているように見えるな…
frsyuki (11/15(火) 4:47)


useLegacyDatetimeCode=false である場合のコードを見ると、getTimestampメソッドにおいて、型がtimestampであるとき、受け取った年月日時分秒を、クライアントJVMのデフォルトタイムゾーンでパースしているように見えるな…おかしいような…
frsyuki (11/15(火) 4:41)


訂正。Connector/Jは、接続確立時に、useTimezone=trueであるか、useLegacyDatetimeCode=falseである場合にのみ、time_zoneセッションパラメータをserverTimeZone変数に保存している。
frsyuki (11/15(火) 4:37)


datetime と timestamp と Connector/J の挙動が分からん…すごく分からん。useLegacyDatetimeCode=trueのときとfalseのときで、どういう挙動になるのかを理解するには…
frsyuki (11/15(火) 3:33)


MySQL Connector/J で、useLegacyDatetimeCode=true/false を付けると、どういう挙動になるんだったか、また忘れた…
frsyuki (11/15(火) 2:01)


はてなブログに投稿しました #はてなブログ MySQL Connector/J 5.1 系では useLegacyDatetimeCode=false にしよう - ひだまりソケットは壊れない vividcode.hatenablog.com/entry/mysql/co…
nobuoka (11/14(月) 8:00)



nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。