これまでのところ、私はこれに対する明確な答えを見つけていません。
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を使用しています。
Java.sqlパッケージには、3つの日付/時刻タイプがあります。
Java.sql.Date
-日付のみ(時刻部分なし)Java.sql.Time
-時間のみ(日付部分なし)Java.sql.Timestamp
-日付と時刻の両方最後のものが必要です: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);
MS SQL ServerまたはMySQLのDATETIMEデータ型またはOracleのDATEデータ型に相当するのはJava.sql.Timestampです。
Javaでは、日付と時刻の両方の値を処理するJava.util.Dateがあります。
SQLでは、通常、日付(日付のみ)、時刻(時刻のみ)、および日付時刻/タイムスタンプ(日付と時刻)があります。
あなたのJavaプログラムでは、通常、常にJava.util.Dateがあります。そのため、PreparedStatementsでDates/Times/DateTimesを設定するたびに、必要なものを常に正確に選択してください。データベースに。
私のMysqlがSQL日付を持ち、アプリでローカルに日付のみがあるという同様の問題がありました
このように解決しました
Java.sql.Date dataStartSql = new Java.sql.Date(start.getTime());
その後、通常はsetDateを使用し、getTimestampを使用して最初の値を取得しました。
startはDateオブジェクトです。