From 67ffc2323f1e790fae9f0c10873a586c6c79ca34 Mon Sep 17 00:00:00 2001 From: Sinan Saral Date: Sun, 4 Jun 2023 14:01:45 +0200 Subject: [PATCH] fix: use UTC time for Instant columns --- .../exposed/sql/javatime/JavaDateColumnType.kt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/exposed-java-time/src/main/kotlin/org/jetbrains/exposed/sql/javatime/JavaDateColumnType.kt b/exposed-java-time/src/main/kotlin/org/jetbrains/exposed/sql/javatime/JavaDateColumnType.kt index dfea6d7fec..aeeefba66e 100644 --- a/exposed-java-time/src/main/kotlin/org/jetbrains/exposed/sql/javatime/JavaDateColumnType.kt +++ b/exposed-java-time/src/main/kotlin/org/jetbrains/exposed/sql/javatime/JavaDateColumnType.kt @@ -18,13 +18,13 @@ internal val DEFAULT_DATE_STRING_FORMATTER by lazy { DateTimeFormatter.ISO_LOCAL_DATE.withLocale(Locale.ROOT).withZone(ZoneId.systemDefault()) } internal val DEFAULT_DATE_TIME_STRING_FORMATTER by lazy { - DateTimeFormatter.ISO_LOCAL_DATE_TIME.withLocale(Locale.ROOT).withZone(ZoneId.systemDefault()) + DateTimeFormatter.ISO_LOCAL_DATE_TIME.withLocale(Locale.ROOT).withZone(ZoneOffset.UTC) } internal val SQLITE_AND_ORACLE_DATE_TIME_STRING_FORMATTER by lazy { DateTimeFormatter.ofPattern( "yyyy-MM-dd HH:mm:ss.SSS", Locale.ROOT - ).withZone(ZoneId.systemDefault()) + ).withZone(ZoneOffset.UTC) } internal val ORACLE_TIME_STRING_FORMATTER by lazy { @@ -209,7 +209,9 @@ class JavaInstantColumnType : ColumnType(), IDateColumnType { } return when { - currentDialect is OracleDialect || currentDialect.h2Mode == H2Dialect.H2CompatibilityMode.Oracle -> + currentDialect is OracleDialect || currentDialect.h2Mode == H2Dialect.H2CompatibilityMode.Oracle + || currentDialect is SQLiteDialect + -> "'${SQLITE_AND_ORACLE_DATE_TIME_STRING_FORMATTER.format(instant)}'" else -> "'${DEFAULT_DATE_TIME_STRING_FORMATTER.format(instant)}'" } @@ -222,7 +224,7 @@ class JavaInstantColumnType : ColumnType(), IDateColumnType { } override fun readObject(rs: ResultSet, index: Int): Any? { - return rs.getTimestamp(index) + return rs.getTimestamp(index, Calendar.getInstance(TimeZone.getTimeZone(ZoneOffset.UTC))) } override fun notNullValueToDB(value: Any): Any = when {