2017-05-09 27 views
2

org.jooq.impl.DSL.currentLocalDateTime()以SQL方言Oracle呈現爲current_timestamp(請參見類org.jooq.impl.CurrentTimestamp,相關代碼未公開提供)。爲什麼jOOQ將DSL.currentLocalDateTime()映射爲current_timestamp而不是localtimestamp?

在Java 8中java.time.LocalDateTime是日期時間而不是的時區。因此,我期望jOOQ呈現LOCALTIMESTAMP而不是CURRENT_TIMESTAMP,因爲the difference between LOCALTIMESTAMP function and CURRENT_TIMESTAMP is that LOCALTIMESTAMP returns a TIMESTAMP value while CURRENT_TIMESTAMP returns a TIMESTAMP WITH TIME ZONE value

如何強制jOOQ呈現沒有時區的時間戳?最好不定義CustomField

回答

1

確實有趣的觀察。這是歷史性的,因爲DSL.currentTimestamp()方法生成一個CURRENT_TIMESTAMP表達,但地圖,以java.sql.Timestamp(這是一個等價類型java.time.LocalDateTime

最適合你的解決辦法是在這些情況下使用plain SQL,一如既往:

public static Field<LocalDateTime> localtimestamp() { 
    return DSL.field("localtimestamp", LocalDateTime.class); 
} 
相關問題