haiju's 開発メモ

開発に必要な情報を自分用にメモ

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で変換した時刻データを登録。

とりあえず、あとで対応した内容をまとめることにして、ここでは

参考サイトのみメモしておく。

[参考/関連サイト]

qiita.com

github.com

github.com

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 の自動初期化および更新機能

www.cgis.biz

MySQLの日付型の扱い方や機能をまとめてみました | つかびーの技術日記

qiita.com

ts0818.hatenablog.com

MySQL :: MySQL 5.6 リファレンスマニュアル :: 5.1.7 サーバー SQL モード

qiita.com

qiita.com

MySQLのsql_mode正しく設定されていますか? – エンジニアリング 入りました!

blog.seeds-std.co.jp

www.softel.co.jp

blog.lorentzca.me

oranie.hatenablog.com

yoku0825.blogspot.com

ja.stackoverflow.com

xirasaya.com