質問: Time.valueOf(str_time); ``` ### 試したこと Timestamp型に変換するもエラー[ffffff]のような表記が出てしまいうまくいきませんでした。 ちなみにmySQLではTime型は839時間が限界のようなのですが、時間を蓄積して記録していく場合、 文字列(varchar)型で登録していっても大丈夫なのでしょうか? こちらについてお分かりになられる方、いらっしゃいましたらご教授願います。 よろしくお願いいたします。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答: 細かいところですが、Time関数でなく、「Time型」です。 Time型というのは、日時(2021/06/13 23:30:00)の時間の部分を表すものなので、最大で"23:59:59"までとなっています。(これはTime型の仕様で、どうしようもありません) 24時間を超える値にJavaでどう対処するかはなかなか悩ましいところで、 ・String型→時間の計算がややしづらいです(計算が不要ならString型で十分) ・Duration型→計算は簡単なのですが、文字列からDuration型に変換したり、Duration型を文字列で表示するときのフォーマットが"P2DT23H30M"(2日と23時間30分)のような、やや特殊なフォーマットになっています。"53:30:00"のようなフォーマットと上記のフォーマットを相互変換する処理は自前で書く必要があります というように、どちらにも一長一短あるような印象です。 (追記)上記の相互変換に関して、検索するとLocalTime型に変換して、というように出てくるかと思うのですが、LocalTime型も"23:59:59.999999999"が最大値なので、24時間を超える時間は扱えません。 (更に追記)840時間を超える時間をSQLで記録する場合、シンプルにfloat型やdouble型というわけにはいかないでしょうか??(3時間半なら3.5というように、数値を記録する)