2017-06-02 37 views
1

Oracle數據庫/時間我有我的數據類型TIMESTAMP和DATE表2列。數據類型爲「DATE」的列是默認的日期/時間,所以我們不需要從JAVA插入,它會自動插入。對於數據類型爲「TIMESTAMP」的其他列,我手動插入來自JAVA的當前時間,該時間是可選的。實際的問題是數據庫的時間與我從java插入的時間不同。即插入的默認時間與我從數據庫手動插入的日期/時間不同。有沒有辦法將數據庫時間與從java插入的系統時間相匹配? SQL日期與我的系統日期相差7-8分鐘,手動插入時應該匹配。更新日期從Java

+0

所以你說你想TIMESTAMP和DATE列有在插入結束相同的值。那是當前的日期和時間? –

+0

號我手動地插入從Java的日期和將其從SQL插入默認的時間不相同。 –

+0

請提供您的當前日期的你得到/設置和您想要的日期,在問題本身。 –

回答

0

如果你想在這兩個提到的列插入CURRENT_DATE,你不能這樣做:

檢查你的系統(如Java代碼運行)時區和數據庫的時區相同。

在數據庫運行此查詢:

SELECT dbtimezone FROM DUAL;

,如果你發現它從你的Java /系統不同,那麼你可以使用常換常:

ALTER DATABASE SET TIME_ZONE='+05:30'; 

https://docs.oracle.com/cd/E11882_01/server.112/e10729/ch4datetime.htm#NLSPG263

編輯1: 如果你不想改變你可以做兩件事情的時區:

1)選擇在Java中的日期/時間形式的數據庫,而不是從日曆對象服用。然後將相同的日期/時間插入TIMESTAMP列。 display timestamp value in java from database

2)從java代替數據庫本身設置數據庫DATE字段。所以顯然設置從Java領域。 http://alvinalexander.com/java/java-timestamp-example-current-time-now

+0

我不應該改變系統或分貝時間,因爲我可以在其他一些環境中部署相同的項目。但數據庫日期應該與環境日期匹配。那可能嗎? –

+0

是的,這是一個解決方案。但考慮到性能,我們沒有其他選擇嗎? –