LabManageプロジェクト概要2
1547 ワード
最近ずっと悩んでいる問題の1つは、bean、あるいはエンティティのDateタイプの属性をどのように言って、データベースに保存するかです.
データベース内のフィールドタイプはDatetimeタイプです.
最初はいろいろな方法を探しました.
まず、javaを報告します.util.Dateとjavasql.Dateが異常に一致しない場合、まず考えられるのは変換です.
Javaのドキュメントは本当によく調べなければなりませんが、javaのドキュメントはすでに明記されています.なぜ時間がありませんか.
ミリ秒値をパッケージしたスリムパッケージ(thin wrapper)で、JDBCがミリ秒値をSQL
SQL
データベースのDateタイプと一致するようにjava仕様でもDateタイプをこうしています.データベースのDateタイプには時間がありません.Datetimeは時間があります.
この时、一つのタイプを思い出して、Timestamp、私达はデータベースから持つ时、时間を取りたいと思って、Timestampを持ってやっと时間を手に入れます.
それをDateをTimestampに変換すればOkになるでしょう.
OK.
このように一言で、終わります.
もちろん、他にも多くの方法がありますが、データベースをvarcharに直接設計したり、longタイプにしたり、formatを後で直接保存したりすることもできます.
このように書くこともできます.
データベース内のフィールドタイプはDatetimeタイプです.
最初はいろいろな方法を探しました.
まず、javaを報告します.util.Dateとjavasql.Dateが異常に一致しない場合、まず考えられるのは変換です.
// bean Date
java.sql.Date d = new java.sql.Date(bean.getDate().getTime());
上のコードは変換を実現したが、setDateはデータベースに格納され、発見日は正しいが、時間はすべて0である.Javaのドキュメントは本当によく調べなければなりませんが、javaのドキュメントはすでに明記されています.なぜ時間がありませんか.
ミリ秒値をパッケージしたスリムパッケージ(thin wrapper)で、JDBCがミリ秒値をSQL
DATE
値として識別できるようにします.ミリ秒値は、1970年1月1日00:00:00:00 GMT以降のミリ秒数を表します.SQL
DATE
の定義と一致するように、java.sql.Date
インスタンスによってカプセル化されたミリ秒の値は、インスタンスに関連する特定のタイムゾーンのゼロに時間、分、秒、およびミリ秒を設定することによって「正規化」される必要があります.データベースのDateタイプと一致するようにjava仕様でもDateタイプをこうしています.データベースのDateタイプには時間がありません.Datetimeは時間があります.
この时、一つのタイプを思い出して、Timestamp、私达はデータベースから持つ时、时間を取りたいと思って、Timestampを持ってやっと时間を手に入れます.
それをDateをTimestampに変換すればOkになるでしょう.
OK.
java.sql.Timestamp tDate = new java.sql.Timestamp(bean.getDate().getTime);
pstmt.setTimestamp(tDate);
このように一言で、終わります.
もちろん、他にも多くの方法がありますが、データベースをvarcharに直接設計したり、longタイプにしたり、formatを後で直接保存したりすることもできます.
このように書くこともできます.
String str =bean.getDate()+" "+bean.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = sdf.parse(str);
java.sql.Timestamp sqlDate = new java.sql.Timestamp(date.getTime());
db.setDate1(sqlDate);
はすべてOKです.