web-dev-qa-db-ja.com

Java.sqlの同等の日時? (Java.sql.datetimeがありますか?)

これまでのところ、私はこれに対する明確な答えを見つけていません。

SQLタイプのDATETIMEと、PreparedStatementを使用するJavaタイプに相当するものは何かを知りたい。

私は見つけました: http://www.Java2s.com/Code/Java/Database-SQL-JDBC/StandardSQLDataTypeswithTheirJavaEquivalents.htm

ただし、SQLタイプ「DATETIME」はsql.dateと同じですが、SQL日付ドキュメントを見ると( http://download.Oracle.com/javase/7/docs/api/Java/ sql/Date.html )、時間は切り捨てられます(すべてゼロ)。

私が望むのは、preparedStatement.setDateTime()または何らかのソートを指定できるようにすることです。

私が見る唯一の他の方法はタイムスタンプを使用することですが、列タイプを変更する必要がありますが、他の誰かが以前にこの問題を経験したことは想像できませんか?

ヒントはありますか?

編集:私はMYSQLを使用しています。

60
Stefan Hendriks

Java.sqlパッケージには、3つの日付/時刻タイプがあります。

最後のものが必要です:Java.sql.Timestamp

これらのタイプを使用している場合、特定のセッターを呼び出す必要はありません。ただ使用する:

Java.util.Date date = new Date();
Object param = new Java.sql.Timestamp(date.getTime());
// The JDBC driver knows what to do with a Java.sql type:
preparedStatement.setObject(param); 
100
Bohemian

MS SQL ServerまたはMySQLのDATETIMEデータ型またはOracleのDATEデータ型に相当するのはJava.sql.Timestampです。

5
Olaf

Javaでは、日付と時刻の両方の値を処理するJava.util.Dateがあります。

SQLでは、通常、日付(日付のみ)、時刻(時刻のみ)、および日付時刻/タイムスタンプ(日付と時刻)があります。

あなたのJavaプログラムでは、通常、常にJava.util.Dateがあります。そのため、PreparedStatementsでDates/Times/DateTimesを設定するたびに、必要なものを常に正確に選択してください。データベースに。

1
everton

私のMysqlがSQL日付を持ち、アプリでローカルに日付のみがあるという同様の問題がありました

このように解決しました

Java.sql.Date dataStartSql = new Java.sql.Date(start.getTime());  

その後、通常はsetDateを使用し、getTimestampを使用して最初の値を取得しました。

startはDateオブジェクトです。

1