- Notifications
You must be signed in to change notification settings - Fork 614
Closed
Labels
Milestone
Description
Description
Only Date clickhouse types are formatted and returned as local date strings. Date32 is returned as LocalDateTime. See
Lines 334 to 340 in b46d249
| } else if (value instanceof ZonedDateTime) { | |
| ClickHouseDataType dataType = column.getDataType(); | |
| ZonedDateTime zdt = (ZonedDateTime) value; | |
| if (dataType == ClickHouseDataType.Date) { | |
| return zdt.format(com.clickhouse.client.api.DataTypeUtils.DATE_FORMATTER); | |
| } | |
| return value.toString(); |
The fix for date was added in https://github.com/ClickHouse/clickhouse-java/pull/2062/files, not sure why Date32 was not added
As a user its surprising that Date32 come back as LocalDateTimes. The value returned by clickhouse is only the date, see https://fiddle.clickhouse.com/caed507d-8d72-48c5-92e2-fac7f5dff261
Steps to reproduce
connection.createStatement().use { stmt -> val query = """ SELECT toDate('1900-01-01') AS Date, toDate32('1900-01-01') AS Date32 """.trimIndent() stmt.executeQuery(query).use { rs -> while (rs.next()) { val date = rs.getString("Date") val date32 = rs.getString("Date32") println("date=$date, date32=$date32") } } } prints: date=1970-01-01, date32=1900-01-01T00:00Z[UTC]
Expected Behaviour
Date32 columns are returned as LocalDates. date=1970-01-01, date32=1900-01-01