MySQL5.6.xに時刻「00:00:00」を適切にINSERTするには?
細かくは「00:00:00」は予約語になっているため、GUIの
クライアントツールを使用していると表示されないだけで
INSERT自体はできていた。
※全面的に表示できないと思ってたけど、A5M2.exe(x64)
ではダメだったけど、Navicatでは問題なかった。
「24:00:00」はdatetimeのMAX値が「23:59:59」に決まって
いるため、無理やり入れようとすると「0000-00-00 00:00:00」
に初期化されてしまい、その後不都合が発生するため選択肢から
除外。
その代替案として提案されたのが「00:00:00」のtimestamp
形式はやめて日本語表記で「0時頃」から「23時頃」に
修正(して欲しいらしい)。
選択肢自体は決め打ちなのでtimestamp形式を日本語表記に
修正するのは問題ないけど、結局、見た目は日本語でも
内部的にはtimestamp形式に変換してINSERTする必要がある。
my.cnfのsql_modeも修正する必要があるし。
日本語表記の時刻から数字だけ取得して、効率よくtimestamp形式
に変換するには?どうしようかねーというところで行き詰まったw
もう少し時間があれば対応できるんだけどなー(ΦωΦ)
一日休んで切り替えて、「01:00:00」を「1時頃」にするんじゃなくて、
「01:00:00頃」にすればいいのでは?という考えが浮かんで、提案したら
「01:00頃」ならOKと承認されたので、それで対応した内容をまとめて
みる。
[対応策]
1. 現状のHH:mm:ssを「HH:mm頃」に修正。
(ex)01:00:00 -> 01:00頃
2. 時間が入ってきたら、replaceで「頃」と「:00」を置換。
(ex)text = text.replace("頃", ":00");
3. 内部的には2で変換した時刻データを登録。
とりあえず、あとで対応した内容をまとめることにして、ここでは
参考サイトのみメモしておく。
[参考/関連サイト]
MySQL :: MySQL 5.6 リファレンスマニュアル :: 11.3.1 DATE、DATETIME、および TIMESTAMP 型
MySQL :: MySQL 5.6 リファレンスマニュアル :: 11.1.2 日付と時間型の概要
MySQL :: MySQL 5.6 リファレンスマニュアル :: 11.3.5 TIMESTAMP および DATETIME の自動初期化および更新機能
MySQLの日付型の扱い方や機能をまとめてみました | つかびーの技術日記
MySQL :: MySQL 5.6 リファレンスマニュアル :: 5.1.7 サーバー SQL モード