7.6.2 データの変換処理
ここでは,setXXXおよびgetXXXメソッド実行時のデータ変換処理について説明します。
- 〈この項の構成〉
(1) setXXXメソッド実行時のデータ変換処理(DATE型,TIME型,またはTIMESTAMP型の場合)
setTime,setDate,setTimestamp,またはsetStringメソッドに,HADBのデータ型のDATE型,TIME型,またはTIMESTAMP型のデータを設定した場合の変換処理について説明します。
HADBのデータ型のDATE型,TIME型,またはTIMESTAMP型の列に対して,setTime,setDate,setTimestamp,またはsetStringメソッドを使用してデータを設定した場合,次の表に示す規則に従ってデータ変換が行われます。
実行するメソッド |
DATE型の変換処理 |
TIME型の変換処理 |
TIMESTAMP型の変換処理 |
---|---|---|---|
setDate(Date Obj)※1 |
APの設定値どおりにデータベースに格納されます。 |
00:00:00がデータベースに格納されます。 |
APの設定値YYYY-MM-DDの後ろに「00:00:00」を付与したデータがデータベースに格納されます。 |
setTime(Time Obj)※2 |
SQLExceptionが投入されます。 |
APの設定値hh:mm:ss.fffのデータがデータベースに格納されます。 |
APの設定値hh:mm:ss.fffの前に「1970-01-01」を付与したデータがデータベースに格納されます。 |
setTimestamp(Timestamp Obj)※3 |
APの設定値から「YYYY-MM-DD」を抜き出したデータがデータベースに格納されます。 |
APの設定値から「hh:mm:ss.fffffffff」を抜き出したデータがデータベースに格納されます。 |
APの設定値YYYY-MM-DD△hh:mm:ss.fffffffffのデータがデータベースに格納されます。※4 |
setString(YYYY-MM-DD形式の文字列) |
指定された日付がjava.sql.Date.valueOf()で変換されてデータベースに格納されます。※5 |
00:00:00がデータベースに格納されます。 |
SQLExceptionが投入されます。 |
setString(hh:mm:ss[.f...]形式の文字列) |
SQLExceptionが投入されます。 |
APの設定値hh:mm:ss[.f...]のデータがデータベースに格納されます。 |
SQLExceptionが投入されます。 |
setString(YYYY-MM-DD△hh:mm:ss[.f...]形式の文字列)※4 |
SQLExceptionが投入されます。 |
APの設定値hh:mm:ss[.f...]のデータがデータベースに格納されます。 |
APの設定値YYYY-MM-DD△hh:mm:ss[.f...]のデータがデータベースに格納されます。※5 |
- 注
-
実際に存在しない日時を指定した場合は,Java仮想マシンが返す値となります。
- 注※1
-
「Date Obj」は,java.sql.Dateオブジェクト「年−月−日」の値を持つオブジェクトです。
- 注※2
-
「Time Obj」は,java.sql.Timeオブジェクト「時:分:秒.ミリ秒」の値を持つオブジェクトです。
- 注※3
-
「Timestamp Obj」は,java.sql.Timestampオブジェクト「年−月−日 時:分:秒.ナノ秒」の値を持つオブジェクトです。
- 注※4
-
△は半角空白を示します。
- 注※5
-
存在しない日時を指定した場合の結果はjava.sql.Date.valueOf(),java.sql.Time.valueOf(),およびjava.sql.Timestamp.valueOf()に依存します。
例1:25:00:00は,01:00:00となります。
例2:2000-01-32は,2000-02-01となります。
例3:1582-10-05は,1582-10-15となります(ユリウス暦とグレゴリオ暦が切り替わります)。
(2) getXXXメソッド実行時のデータ変換処理(DATE型,TIME型,TIMESTAMP型,または文字列型の場合)
getTime,getDate,またはgetTimestampメソッドに,HADBのデータ型のDATE型,TIME型,TIMESTAMP型,または文字列型(CHAR型,VARCHAR型)のデータを設定した場合の変換処理について説明します。
HADBのデータ型のDATE型,TIME型,TIMESTAMP型,または文字列型の列に対して,getTime,getDate,またはgetTimestampメソッドを使用してデータを設定した場合,次の表に示す規則に従ってデータ変換が行われます。
実行するメソッド |
DATE型の変換処理 |
TIME型の変換処理 |
TIMESTAMP型の変換処理 |
文字列型の変換処理 |
---|---|---|---|---|
getDate()※1 |
データベースに格納されている値どおりにjava.sql.Dateのオブジェクトとして取得されます。※2 |
1970-01-01のデータを持つjava.sql.Dateのオブジェクトとして取得されます。※2 |
データベースから取得したTIMESTAMP型のデータから,「年−月−日」のデータを抜き出したデータがjava.sql.Dateのオブジェクトとして取得されます。※2 |
文字列表現「YYYY-MM-DD」だけがjava.sql.Dateのオブジェクトとして取得されます。それ以外はSQLExceptionが投入されます。 |
getTime()※1 |
SQLExceptionが投入されます。 |
データベースから取得したTIME型のデータから,「時:分:秒.ミリ秒」のデータを抜き出したデータがjava.sql.Timeのオブジェクトとして取得されます。※2 |
データベースから取得したTIMESTAMP型のデータから,「時:分:秒.ミリ秒」のデータを抜き出したデータがjava.sql.Timeのオブジェクトとして取得されます。※2 |
文字列表現「hh:mm:ss[.f...]」だけがjava.sql.Timeのオブジェクトとして取得されます。それ以外はSQLExceptionが投入されます。 |
getTimestamp()※1 |
データベースから取得したDATE型のデータの後ろに「00:00:00.000000000」を付加したデータがjava.sql.Timestampのオブジェクトとして取得されます。 |
データベースから取得したTIME型のデータの前に「1970-01-01」を付加したデータがjava.sql.Timestampのオブジェクトとして取得されます。 |
データベースから取得したTIMESTAMP型のデータから「年−月−日時:分:秒.ナノ秒」のデータを抜き出したデータがjava.sql.Timestampのオブジェクトとして取得されます。 |
TIMESTAMP型の文字列表現「YYYY-MM-DD△hh:mm:ss[.f...]」(△は半角空白)だけがjava.sql.Timestampのオブジェクトとして取得されます。それ以外はSQLExceptionが投入されます。 |
- 注※1
-
データベースに格納されている日時とjava.sql.Time,java.sql.Date,およびjava.sql.Timestampから得られる日時は異なることがあります。
例1:25:00:00は,01:00:00となります。
例2:2000-01-32は,2000-02-01となります。
例3:1582-10-05と1582-10-15は,どちらも1582-10-15となります(ユリウス暦とグレゴリオ暦が切り替わります)。
- 注※2
-
値の設定について記載していない日付項目(年−月−日)の設定値は「1970-01-01」,時間項目(時:分:秒)の設定値は「00:00:00」とします。