我試圖在PostgreSQL中編寫日期之前的日期與PreparedStatement
並失敗。 有沒有任何技巧可以做到這一點?如何在PostgreSQL中通過jdbc編寫Time之前的日期?
Postgres中的字段是TIMESTAMP,沒有時區。
當我試圖通過Statement
(如SQL insert into public.tstest1(ts1) values('"2014-01-11 14:00:08.354 BC"')
)將它寫成字符串時 - 它的工作原理。 但我無法正確檢索它與共同ResultSet
- 它失去了「BC」的一部分,並不正確地顯示幾天或一年 - 在任何情況下 - 它在Anno多米尼AD工作。
我檢查了SimpleDateFormat
,我在準備java.sql.Timestamp
與2014年BC年如new Timestamp(-2014-1900+1, 01, 01, 01, 01, 01, 01)
後得到BC日期輸出。
但寫入數據庫後無法達到同樣的效果。
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO public.tstest1(ts1) VALUES (?)");
Timestamp tsBC = new Timestamp(-2014-1900+1, 01, 01, 01, 01, 01, 01);
Date dt1 = new Date(tsBC.getTime());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm z G");
System.out.println(sdf.format(dt1));
pstmt.setTimestamp(1, tsBC);
pstmt.execute();
pstmt.clearParameters();
pstmt.setDate(1, dt1);
pstmt.execute();
pstmt.clearParameters();
pstmt.setObject(1, dt1);
pstmt.execute();
pstmt.clearParameters();
pstmt.setObject(1, tsBC);
pstmt.execute();
pstmt.close();
conn.close();
感謝您的回答,兄弟。 –
解決方案是轉移到最新版本的9.x jdbc驅動程序。我經歷了與舊版本pg74有關的問題。 –