Java側では、日付は通常(設計が不十分ですが、それは別として) java.util.Date
。基本的には、 Epochtime
に支えられています。 long
のフレーバー 、タイムスタンプとも呼ばれます。日付と時刻の両方の部分に関する情報が含まれています。 Javaでは、精度はミリ秒単位です。
SQL側には、いくつかの標準的な日付と時刻のタイプ、 DATE
があります 、 TIME
およびTIMESTAMP
(一部のDBでは DATETIME
とも呼ばれます )、JDBCではとして表されます。 java.sql.Date
、 java.sql.Time コード>
および java.sql.Timestamp コード>
、すべてのサブクラス
java.util.Date
の 。精度はDBに依存し、多くの場合Javaのようにミリ秒単位ですが、秒単位の場合もあります。
java.util.Date
とは対照的に 、 java.sql.Date
日付部分(年、月、日)に関する情報のみが含まれます。 時間
時間部分(時間、分、秒)とタイムスタンプ
に関する情報のみが含まれます java.util.Date
など、両方の部分に関する情報が含まれています
タイムスタンプをDBに保存する通常の方法(つまり、 java.util.Date
Java側およびjava.sql.Timestamp
JDBC側で) PreparedStatement#setTimestamp()
。
java.util.Date date = getItSomehow();
Timestamp timestamp = new Timestamp(date.getTime());
preparedStatement = connection.prepareStatement("SELECT * FROM tbl WHERE ts > ?");
preparedStatement.setTimestamp(1, timestamp);
DBからタイムスタンプを取得する通常の方法は、 ResultSet#getTimestamp()
。
Timestamp timestamp = resultSet.getTimestamp("ts");
java.util.Date date = timestamp; // You can just upcast.