Hitachi

Hitachi Advanced Data Binder AP開発ガイド


7.6.2 データの変換処理

ここでは,setXXXおよびgetXXXメソッド実行時のデータ変換処理について説明します。

〈この項の構成〉

(1) setXXXメソッド実行時のデータ変換処理(DATE型,TIME型,またはTIMESTAMP型の場合)

setTimesetDatesetTimestamp,またはsetStringメソッドに,HADBのデータ型のDATE型,TIME型,またはTIMESTAMP型のデータを設定した場合の変換処理について説明します。

HADBのデータ型のDATE型,TIME型,またはTIMESTAMP型の列に対して,setTimesetDatesetTimestamp,またはsetStringメソッドを使用してデータを設定した場合,次の表に示す規則に従ってデータ変換が行われます。

表7‒9 setXXXメソッド実行時の変換処理

実行するメソッド

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-DDhh: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-DDhh:mm:ss[.f...]形式の文字列)※4

SQLExceptionが投入されます。

APの設定値hh:mm:ss[.f...]のデータがデータベースに格納されます。

APの設定値YYYY-MM-DDhh: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型,または文字列型の場合)

getTimegetDate,またはgetTimestampメソッドに,HADBのデータ型のDATE型,TIME型,TIMESTAMP型,または文字列型(CHAR型,VARCHAR型)のデータを設定した場合の変換処理について説明します。

HADBのデータ型のDATE型,TIME型,TIMESTAMP型,または文字列型の列に対して,getTimegetDate,またはgetTimestampメソッドを使用してデータを設定した場合,次の表に示す規則に従ってデータ変換が行われます。

表7‒10 getXXXメソッド実行時の変換処理

実行するメソッド

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-DDhh:mm:ss[.f...]」(△は半角空白)だけがjava.sql.Timestampのオブジェクトとして取得されます。それ以外はSQLExceptionが投入されます。

注※1

データベースに格納されている日時とjava.sql.Timejava.sql.Date,およびjava.sql.Timestampから得られる日時は異なることがあります。

例1:25:00:00は,01:00:00となります。

例2:2000-01-32は,2000-02-01となります。

例3:1582-10-051582-10-15は,どちらも1582-10-15となります(ユリウス暦とグレゴリオ暦が切り替わります)。

注※2

値の設定について記載していない日付項目()の設定値は「1970-01-01」,時間項目()の設定値は「00:00:00」とします。