diff --git common/src/java/org/apache/hive/common/util/TimestampParser.java common/src/java/org/apache/hive/common/util/TimestampParser.java index d30ab88892..1a85c586d2 100644 --- common/src/java/org/apache/hive/common/util/TimestampParser.java +++ common/src/java/org/apache/hive/common/util/TimestampParser.java @@ -25,6 +25,7 @@ import java.util.regex.Pattern; import org.apache.hadoop.hive.common.type.Timestamp; +import org.apache.hadoop.hive.common.type.TimestampUtils; import org.joda.time.DateTime; import org.joda.time.LocalDateTime; import org.joda.time.MutableDateTime; @@ -106,7 +107,7 @@ public Timestamp parseTimestamp(String strValue) throws IllegalArgumentException } // Otherwise try default timestamp parsing - return Timestamp.valueOf(strValue); + return TimestampUtils.stringToTimestamp(strValue); } private Optional tryParseWithFormat(String strValue) { diff --git common/src/test/org/apache/hive/common/util/TestTimestampParser.java common/src/test/org/apache/hive/common/util/TestTimestampParser.java index 00a7904ecf..631665218d 100644 --- common/src/test/org/apache/hive/common/util/TestTimestampParser.java +++ common/src/test/org/apache/hive/common/util/TestTimestampParser.java @@ -66,6 +66,19 @@ public void testDefault() { Timestamp.valueOf("1970-01-01 00:00:00")), new ValidTimestampCase("1945-12-31T23:59:59", Timestamp.valueOf("1945-12-31 23:59:59")), + + new ValidTimestampCase("2018-10-19 10:35:00.123 America/Los_Angeles", + Timestamp.valueOf("2018-10-19 10:35:00.123")), + new ValidTimestampCase("2018-10-19 10:35:00.123 GMT+01:00", + Timestamp.valueOf("2018-10-19 10:35:00.123")), + new ValidTimestampCase("2018-10-19 10:35:00.123+01:00", + Timestamp.valueOf("2018-10-19 10:35:00.123")), + new ValidTimestampCase("2018-10-19 10:35:00 America/Los_Angeles", + Timestamp.valueOf("2018-10-19 10:35:00")), + new ValidTimestampCase("2018-10-19 10:35:00 GMT+01:00", + Timestamp.valueOf("2018-10-19 10:35:00")), + new ValidTimestampCase("2018-10-19 10:35:00+01:00", + Timestamp.valueOf("2018-10-19 10:35:00")), }; String[] invalidCases = {