日時を表すフィールドとしてはTIMESTAMPとDATETIMEというフィールド型がある。どちらもJava上からは(MySQLドライバの扱いとしては)、java.sql.Timestampになるようだ。この二つには大きな違いがあり、TIMESTAMP型は「使い物にならない」。その理由をまとめてみる。Contents2038年問題がある勝手にデフォルトが設定される値がOSのロケールに依存してしまうDATETIMEを使う2038年問題がある良く言われることだが、このフィールドの値は2038年までしか対応していない。current_timestamp」になってしまう。これはもちろんMySQLシステムの設定によるようだが、デフォルトではこういった振る舞いになる。timestamp」を作成することはできないようだ。このあたりの事情は以下にある。値がOSのロケールに依存してしまうおおよそデータベースシステムのTIMESTAMP値というのは、ロケールを持たない値、つまりOSのロケールが変わろうとも、同じ値になるのだが、しかし、MySQLのTIMESTAMP値はOSのロケールに依存してしまうのである。これは以下に説明がある。Typesつまり、うっかりロケールを変更しようものなら、全く別の値になってしまう。DATETIMEを使うこれらの振る舞いは非常にわかりにくく制御しにくい。以下の余計な点は問題だ。MySQLシステムの設定に振る舞いが依存するOSのロケール設定に振る舞いが依存する。これを避けるためにはDATETIMEを使うしかない。ysugimura関連記事MySQLのBLOBデータ型の最大サイズの理由が不明MySQLのいわゆるBLOB型は、最大長によって型が異なっている。...MySQL:IDを生成する方法テーブルとは無関係に1から始まる連番値を生成させたい。...JavaFXのバグ、その1JavaFXのバグを発見した。1.8.0では正常だが、10.0.2では発現する。組み込みでxml無しに最も簡単にJettyのHttpセッションを永続化する。...Aero無しでのAnyDeskAnyDeskの全投稿は/tag/anydeskにあるので参照されたい。コメントをキャンセルメールアドレスが公開されることはありません。*ウェブサイト上に表示された文字を入力してください。