2 回答

TA貢獻(xiàn)1895條經(jīng)驗 獲得超3個贊
這不是 jOOQ 問題。PostgreSQL 沒有與ZonedDateTime
.?它的TIMESTAMPTZ
orTIMESTAMP WITH TIME ZONE
類型實際上只是一個java.time.Instant
.?
對于帶時區(qū)的時間戳,內(nèi)部存儲的值始終采用 UTC(通用協(xié)調(diào)時間,傳統(tǒng)上稱為格林威治標(biāo)準(zhǔn)時間,GMT)。指定了顯式時區(qū)的輸入值將使用該時區(qū)的適當(dāng)偏移量轉(zhuǎn)換為 UTC。如果輸入字符串中未指定時區(qū),則假定其處于系統(tǒng) TimeZone 參數(shù)指示的時區(qū),并使用時區(qū)的偏移量將其轉(zhuǎn)換為 UTC。
jOOQ 無法為您做任何事。
請注意,jOOQ 默認(rèn)將TIMESTAMP WITH TIME ZONE
所有 SQL 數(shù)據(jù)庫中的類型映射到java.time.OffsetDateTime
,因為這就是 JDBC 規(guī)范的作用。對于像 JDBC(和 jOOQ)這樣的供應(yīng)商無關(guān)的 API,這是一個合理的默認(rèn)值。但如果您想擁有 PostgreSQL 原生行為,我建議您將所有TIMESTAMPTZ
類型重寫為INSTANT
(如果您使用的是 jOOQ 3.12+)。
如果由于某種原因,您需要維護(hù)此信息,則需要將其存儲在單獨的列中,或text
作為格式化值存儲在列中。

TA貢獻(xiàn)1859條經(jīng)驗 獲得超6個贊
impossibl pgjdbc 驅(qū)動程序版本 0.7.1 和 jOOQ 之間存在不兼容性,導(dǎo)致在從 postgres 數(shù)據(jù)庫中選擇帶時區(qū)的時間戳?xí)r不應(yīng)用偏移量。
萬一其他人也在運(yùn)行這個 jar 組合,如果 impossibl 驅(qū)動程序中的功能是必要的,建議更新到 pgjdbc 0.8.2,如果不需要,則放棄。
添加回答
舉報