我正在使用終端在不同時區可訪問的Web門戶的時鐘輸入/輸出功能。Spring JDBC Persist ZonedDateTime
我正在使用ZonedDateTime來處理計算什麼日期時間應該是給定的衝入/出記錄。
// Get store timezone
ZoneId storeTimeZone = this.storeService.getStoreZoneId(storeNum);
// Get current store time to use for punch in/out timestamp
ZonedDateTime currentStoreTime = ZonedDateTime.ofInstant(Instant.now(), storeTimeZone);
當我將數據保存到Oracle 11g時,我無法保存ZonedDateTime對象。可能不受JDBC驅動程序支持。它的企業環境使數據庫和驅動程序不會改變。
當我構建MapSqlParamSource傳入NamedParameterJdbcTemplate時,我不得不將它轉換爲java.sql.Timestamp,但後來我失去了區域數據並存儲了服務器所在時區的時間戳,需求指示它必須在存儲時間內存儲在數據庫中,這只是一個Oracle TIMESTAMP列。
params.addValue("clockInTimestamp", Timestamp.from(prevRecord.getTimeEntryTimestamp().toInstant()), Types.TIMESTAMP);
有沒有辦法來完成這種持續的ZonedDateTime?
遺忘Spring,JDBC等的細節 - 聽起來像你試圖將「即時+時區」存儲在只能存儲瞬間的字段中......所以這不會比「I想要在4字節字段中存儲32個字節的數據「會。我建議你計算出你想存儲什麼信息,以什麼方式*然後*計算出如何實現它。 –