- PR -

データベースからの日付・時刻型データの取得について

投稿者投稿内容
RYO
会議室デビュー日: 2006/02/21
投稿数: 12
投稿日時: 2006-02-21 10:36
お世話になります。

データベース(MySQL4.1)から日付・時刻型のデータ取得について質問させて下さい。

char や varchar といった文字列型のデータは getString() で取得すれば良いと
思いますが、time、date、timesatamp といった日付・時刻型のデータを取得するには、
どのように取得するのが良いのでしょうか?
getTime() getDate() getTimeStamp() 等で取得しよう考えていたのですが、
java.sql.Time や Date の API を見ると、ほとんどのメソッドが非推奨のもので、
toString() で文字列型に変換するしかないのなら、最初から getString() で
取得しておいた方が無難なのかとも考えています。
今のトコロは、取得したデータを画面表示するだけなので、問題ないのですが、
今後は、他の日付や時間と対比させたり等をしたいと考えていますので、何か
汎用的に使える様な方法は無いでしょうか?

よろしくお願いします。
悶吉
会議室デビュー日: 2004/03/30
投稿数: 14
投稿日時: 2006-02-21 11:02
Timestampやjava.sql.Dateのスーパークラスである
java.util.DateのAPI仕様は、ちゃんとお読みになられましたか?
RYO
会議室デビュー日: 2006/02/21
投稿数: 12
投稿日時: 2006-02-21 11:34
読んだつもり・・・です。
java.util.Date は非推奨なので、Calendar もしくは regorianCalendar を
使うという事でよろしいですか?

そうすると、getString() で取得したデータを、年・月・日・時・分・秒に
分解して Calendar に set するという事になるのでしょうか?
悶吉
会議室デビュー日: 2004/03/30
投稿数: 14
投稿日時: 2006-02-21 11:48
引用:

RYOさんの書き込み (2006-02-21 11:34) より:
読んだつもり・・・です。
java.util.Date は非推奨なので、Calendar もしくは regorianCalendar を
使うという事でよろしいですか?


API仕様に書かれている通りです。

引用:

そうすると、getString() で取得したデータを、年・月・日・時・分・秒に
分解して Calendar に set するという事になるのでしょうか?


Calendar#setTime(Date)やCalendar#setTimeInMillis(long)あたりを読むと幸せになれるかもしれません。
RYO
会議室デビュー日: 2006/02/21
投稿数: 12
投稿日時: 2006-02-21 11:58
悶吉さんありがとうございました。幸せになれました。

APIはしっかり読まないとダメですね・・・。すみませんでした。

未記入
常連さん
会議室デビュー日: 2005/05/07
投稿数: 32
投稿日時: 2006-02-21 12:44
まさか、long値をDBに格納するようにはしてませんよね?
なんか、やりとりを見てるとそれで「できました」と思ってしまっている悪寒が…。
RYO
会議室デビュー日: 2006/02/21
投稿数: 12
投稿日時: 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 で持っておこうかなと考えています。

ダメですかね?
vincent
大ベテラン
会議室デビュー日: 2004/07/09
投稿数: 142
投稿日時: 2006-02-21 16:58
引用:

DB の Date は YYYY-MM-DD、Time は TT:MM:SS、TimeStamp は YYYY-MM-DD TT:MM:SS
の形式で格納してあります。



「DB内部の値」と「出力時の書式」は別の問題です。
(文字列型で格納してないですよね?)

まずはSQLのDATE, TIME, TIMESTAMP型とjava.util.Dateクラスの違い
(とりうる値の範囲など)について整理してみるのが良いと思います。

あと、結局何をしたいのかよくわからないので、
ゴールをもっと具体的に書くようにしてください。

※ただ「幸せになりたい」だけなら、別な方法でお願いします。

スキルアップ/キャリアアップ(JOB@IT)