- - PR -
データベースからの日付・時刻型データの取得について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-02-21 10:36
お世話になります。
データベース(MySQL4.1)から日付・時刻型のデータ取得について質問させて下さい。 char や varchar といった文字列型のデータは getString() で取得すれば良いと 思いますが、time、date、timesatamp といった日付・時刻型のデータを取得するには、 どのように取得するのが良いのでしょうか? getTime() getDate() getTimeStamp() 等で取得しよう考えていたのですが、 java.sql.Time や Date の API を見ると、ほとんどのメソッドが非推奨のもので、 toString() で文字列型に変換するしかないのなら、最初から getString() で 取得しておいた方が無難なのかとも考えています。 今のトコロは、取得したデータを画面表示するだけなので、問題ないのですが、 今後は、他の日付や時間と対比させたり等をしたいと考えていますので、何か 汎用的に使える様な方法は無いでしょうか? よろしくお願いします。 | ||||||||
|
投稿日時: 2006-02-21 11:02
Timestampやjava.sql.Dateのスーパークラスである
java.util.DateのAPI仕様は、ちゃんとお読みになられましたか? | ||||||||
|
投稿日時: 2006-02-21 11:34
読んだつもり・・・です。
java.util.Date は非推奨なので、Calendar もしくは regorianCalendar を 使うという事でよろしいですか? そうすると、getString() で取得したデータを、年・月・日・時・分・秒に 分解して Calendar に set するという事になるのでしょうか? | ||||||||
|
投稿日時: 2006-02-21 11:48
API仕様に書かれている通りです。
Calendar#setTime(Date)やCalendar#setTimeInMillis(long)あたりを読むと幸せになれるかもしれません。 | ||||||||
|
投稿日時: 2006-02-21 11:58
悶吉さんありがとうございました。幸せになれました。
APIはしっかり読まないとダメですね・・・。すみませんでした。 | ||||||||
|
投稿日時: 2006-02-21 12:44
まさか、long値をDBに格納するようにはしてませんよね?
なんか、やりとりを見てるとそれで「できました」と思ってしまっている悪寒が…。 | ||||||||
|
投稿日時: 2006-02-21 15:21
ご心配ありがとうございます。大丈夫です。
DB の Date は YYYY-MM-DD、Time は TT:MM:SS、TimeStamp は YYYY-MM-DD TT:MM:SS の形式で格納してあります。 (DB)Date型のデータは getDate() で取り出し、Calendar へ setTime() で格納しよう と考えています。 (DB)TimeStamp型のデータは getTimeStamp() で取り出し、TimeStamp#getTime() で long値にし、それを Calendar へ setTimeInMills() で格納しようと考えています。 (DB)Time型は Calendar へは格納できない・・・ですよね。なんで、そのまま Time で持っておこうかなと考えています。 ダメですかね? | ||||||||
|
投稿日時: 2006-02-21 16:58
「DB内部の値」と「出力時の書式」は別の問題です。 (文字列型で格納してないですよね?) まずはSQLのDATE, TIME, TIMESTAMP型とjava.util.Dateクラスの違い (とりうる値の範囲など)について整理してみるのが良いと思います。 あと、結局何をしたいのかよくわからないので、 ゴールをもっと具体的に書くようにしてください。 ※ただ「幸せになりたい」だけなら、別な方法でお願いします。 |