我正在使用JPA和JEE將DB2表遷移到Oracle數據庫。因此,我遇到了「日期」和「時間」類型列的問題。更具體地說,在Oracle中沒有數據類型「Time」,所以我試圖從DB2中存儲Oracle的類型「Date」列中的2列(Date類型和Time類型中的另一個類型)的並置數據庫。這樣一來,我告訴你我是如何在Oracle數據庫中定義的列和映射我定義:在Oracle日期列中存儲日期和時間
, DATA_HORA_CREACIO DATE DEFAULT
TO_DATE('0001-01-01-00.00.00','YYYY-MM-DD-HH24.MI.SS')
NOT NULL
private Date dataHoraCreacio;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "DATA_HORA_CREACIO", nullable = false)
public Date getDataHoraCreacio() {
return this.dataHoraCreacio;
}
public void setDataHoraCreacio(Date dataHoraCreacio) {
this.dataHoraCreacio = dataHoraCreacio;
}
SimpleDateFormat sdfDateHour = new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss");
String data = sdfDate.format(comandaAvariaDb2.getId().getDataCreacio());
String hora = sdfHour.format(comandaAvariaDb2.getId().getHoraCreacio());
comandaAvariaOraId.setDataHoraCreacio(sdfDateHour.parse(data + "-" + hora));
即使如此,雖然覆蓋了信息化工作變量被正確地告知,該部分指的是時間存儲和未插入數據庫中:
Variable working data: Thu Feb 02 18:42:53 CET 2006
DataBase inserted Value: 2006-02-02
我一直在嘗試一些工作幾個小時沒有使它的工作。即便如此,如果我設法使用「Timestamp」類型的列,但我不認爲是最好的解決方案,因爲毫秒佔用了不必要的空間。
任何想法?
在此先感謝。
請看這裏 - Oracle **有** TIME數據類型:http://docs.oracle.com/javadb/10.8.3.0/ref/rrefsqlj21908.html - 關於另一個想法:你如何看待2006-02-02插入?爲什麼你使用DATE作爲目標字段而不是TIMESTAMP? – Jan
@Jan,我不認爲這個鏈接是正確的。這是「java db」,而不是oracle數據庫。 – OldProgrammer
對。錯誤的鏈接。再次說明:oracle DATE列das有一個時間部分:https://docs.oracle.com/cd/B19306_01/server.102/b14225/ch4datetime.htm#i1006006 - 請參閱我的更新答案。 – Jan