2011-12-16 5 views
15

は私が2007-02-07 12:00:00.00JavaのSQL日時

を取得しかし、私はこのようなDateオブジェクト作ら:データベース内の秒の値を取得する方法2007-02-07 17:29:46.00

を。常にそれを12:00:00.00に変更します。

date.setYear(Integer.valueOf(parsedDate[2].replaceAll(" ", "")) - 1900); 
date.setMonth(Integer.valueOf(parsedDate[0].replaceAll(" ", ""))); 
date.setDate(Integer.valueOf(parsedDate[1].replaceAll(" ", ""))); 
... 
java.sql.Date sqlDate = new java.sql.Date(date.getTime()); 

どのフォーマッタを使用する必要がありますか?

+0

「日付」(ある時点を表す数字)は、その形式とは独立しています(*同じ*番号は「2007-02-07」または「2007-07-02」または「2/(2007年7月7日、ロサンゼルスでは2/7/2007、ロンドンでは2/8/2007)、最後に "日付"(例: "2/7/2007 ")は、datetimeとは異なる値を持っています(例えば、" 2/7/2007 09:15 am "など)。" datetime "を使用することを意味する" date "をおそらく使用しています。 – paulsm4

+0

PS:java.util.dateは、 "date"または "datetime"のいずれかを意味します。java.sql.dateは "date"のみで、MS SQL Serverなどのデータベースでは、 "date"または "datetime"は "timestamp"とは異なります。 http://stackoverflow.com/questions/2305973/java-util-date-vs-java-sql-date – paulsm4

+0

PPS:MS Sql Server(使用している場合)では、「タイムスタンプ」は強調表示されていません。日付または日時:http://www.sqlteam.com/article/ timestamps-vs-datetime-data-typesです。日付を必要とする場合は(時刻に関係なく)、SQL列を「日付」にします。あなたが時刻を望むなら(カレンダーの日付にかかわらず)、それを「時間」にします。 NO CIRCUMSANSANESでは、SQL Serverの「タイムスタンプ」を使用して論理時刻/日付列を保持します。 – paulsm4

答えて

29

java.sql.Dateは、日付と時刻ではなく、日付を表します。

To conform with the definition of SQL DATE, the millisecond values wrapped by a java.sql.Date instance must be 'normalized' by setting the hours, minutes, seconds, and milliseconds to zero in the particular time zone with which the instance is associated.

日付と時刻を保存したい場合は、別のタイプを探してください - 例えば:the docsからjava.sql.Timestamp。編集:それはあなたがTIMESTAMP列の型を使用することを示唆していない - paulsm4がコメントで言うように、それは別のものです。しかし、私の知る限り、JDBCしかサポートしています。

  • Dateを(いいえ、あなたはあまりにも時間が欲しい)
  • Time(いいえ、あなたはあまりにも日付が欲しい)
  • Timestamp(日付を含みそして、時間が、あなたは、私が仕事にDATETIMEカラムを用いたJava Timestampタイプを使用してを期待する)

をTIMESTAMP SQLセマンティクスを望んでいないものの精度のレベルのないことTimestampが提供します。

編集:もう少し調査したら、java.sql.Timeタイプを使用しますが、少なくともMicrosoftドライバを使用している場合は特別なドライバパラメータを使用します。詳細については、configuring JDBCのこれらのドキュメントを参照してください。

+0

この日までにどのように連絡するのですか?他の選択肢はありますか? – Elbek

+0

@elbek:私の編集を参照してください - 基本的に、ここでは 'Date'を使用しないでください。別のタイプを使用してください。 –

+0

私は列のタイプのタイムスタンプを行う場合、私はそれを手動で変更することはできませんか? – Elbek