diff --git a/presto-base-jdbc/src/main/java/io/prestosql/plugin/jdbc/optimization/BaseJdbcRowExpressionConverter.java b/presto-base-jdbc/src/main/java/io/prestosql/plugin/jdbc/optimization/BaseJdbcRowExpressionConverter.java index 7b128f94211b61a63e468204fdb0f8ea27eb3ea1..946eff78fcd9b7edee187334e0c8aa9ea7a33cf6 100644 --- a/presto-base-jdbc/src/main/java/io/prestosql/plugin/jdbc/optimization/BaseJdbcRowExpressionConverter.java +++ b/presto-base-jdbc/src/main/java/io/prestosql/plugin/jdbc/optimization/BaseJdbcRowExpressionConverter.java @@ -30,19 +30,7 @@ import io.prestosql.spi.relation.RowExpressionService; import io.prestosql.spi.relation.SpecialForm; import io.prestosql.spi.relation.VariableReferenceExpression; import io.prestosql.spi.sql.RowExpressionConverter; -import io.prestosql.spi.type.BigintType; -import io.prestosql.spi.type.BooleanType; -import io.prestosql.spi.type.CharType; -import io.prestosql.spi.type.DecimalType; -import io.prestosql.spi.type.DoubleType; -import io.prestosql.spi.type.IntegerType; -import io.prestosql.spi.type.RealType; -import io.prestosql.spi.type.SmallintType; -import io.prestosql.spi.type.StandardTypes; -import io.prestosql.spi.type.TimestampType; -import io.prestosql.spi.type.TinyintType; -import io.prestosql.spi.type.Type; -import io.prestosql.spi.type.VarcharType; +import io.prestosql.spi.type.*; import io.prestosql.sql.ExpressionFormatter; import java.math.BigDecimal; @@ -258,6 +246,11 @@ public class BaseJdbcRowExpressionConverter Long time = (Long) literal.getValue(); return format("TIMESTAMP '%s'", formatter.format(Instant.ofEpochMilli(time).atZone(UTC).toLocalDateTime())); } + if (type instanceof TimestampWithTimeZoneType) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); + Long time = unpackMillisUtc((Long) literal.getValue()); + return format("timestamp with time zone '%s'", formatter.format(Instant.ofEpochMilli(time).atZone(UTC).toLocalDateTime())); + } throw new PrestoException(NOT_SUPPORTED, String.format("Cannot handle the constant expression %s with value of type %s", literal.getValue(), type)); }