6

Spring JDBCTemplate を使用して DB に接続しています。以下のクエリを使用してDBで日付を選択しているとき

select to_date(valid_to,'DD-MM-YYYY HH24:MI:SS') from composition

出力は、31-12-99 23:59:59 です。

しかし、以下のように JDBCTemplate で同じものを使用している場合、

Date d = jdbcTemplate.queryForObject("select to_date(valid_to,'DD-MM-YY HH24:MI:SS') from composition",Date.class);

outpt は 2099-12-31 00:00:00.0 です。

時刻が正しくありません。Dateクラスでも同じ時間が必要です。それを取得する方法は?

4

5 に答える 5

8

を使用する必要がありますjava.sql.Timestampjava.sql.Dateには時間コンポーネントがないため、時間は常に 00:00:00 です。

于 2013-06-22T10:18:23.870 に答える
5

java.sql.Date は、SQL の日付型を反映しているため、時間、分、秒、およびミリ秒を保持しません。Date の代わりに java.sql.Timestamp を要求するだけです。Timestamp は java.util.Date のサブタイプなので、直接問い合わせることができます。

import java.util.Date;
import java.sql.Timestamp;

[...]

Date d = jdbcTemplate.queryForObject("select to_date(valid_to,'DD-MM-YY HH24:MI:SS') from index_composition", Timestamp.class);
于 2014-06-16T16:00:01.223 に答える
1

をインポートしている必要がありますjava.sql.Date。代わりにjava.util.Dateまたはを使用しますjava.util.Timestamp

java.sql.Date時間を短縮します。

于 2013-06-22T10:18:11.070 に答える
0

Java 8 では、より適切な Date クラス (java.time.* 内) を使用できます。LocalDate (Java) から SQL 日付への変換は、次の方法で行われます。java.sql.Date.valueOf(LocalDate.of(2012, Month.DECEMBER, 12))

Oracle は、最も古いバージョンの代わりに Java 8 Dates を使用することをお勧めします。

これらのクラスには、次のようないくつかの欠点がありました。

The Calendar class was not type safe.
Because the classes were mutable, they could not be used in multithreaded applications.
Bugs in application code were common due to the unusual numbering of months and the lack of type safety.
于 2016-05-23T13:56:37.223 に答える