diff --git ql/src/test/queries/clientpositive/timestamp_date_only.q ql/src/test/queries/clientpositive/timestamp_date_only.q new file mode 100644 index 0000000..324938e --- /dev/null +++ ql/src/test/queries/clientpositive/timestamp_date_only.q @@ -0,0 +1,3 @@ +select cast("2016-12-29 23:59:59" as timestamp) < "2016-12-30"; +select cast("2016-12-30 00:00:00" as timestamp) = "2016-12-30"; +select cast("2016-12-30 00:00:01" as timestamp) > "2016-12-30"; \ No newline at end of file diff --git ql/src/test/results/clientpositive/timestamp_date_only.q.out ql/src/test/results/clientpositive/timestamp_date_only.q.out new file mode 100644 index 0000000..8f37a29 --- /dev/null +++ ql/src/test/results/clientpositive/timestamp_date_only.q.out @@ -0,0 +1,27 @@ +PREHOOK: query: select cast("2016-12-29 23:59:59" as timestamp) < "2016-12-30" +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +#### A masked pattern was here #### +POSTHOOK: query: select cast("2016-12-29 23:59:59" as timestamp) < "2016-12-30" +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +#### A masked pattern was here #### +true +PREHOOK: query: select cast("2016-12-30 00:00:00" as timestamp) = "2016-12-30" +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +#### A masked pattern was here #### +POSTHOOK: query: select cast("2016-12-30 00:00:00" as timestamp) = "2016-12-30" +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +#### A masked pattern was here #### +true +PREHOOK: query: select cast("2016-12-30 00:00:01" as timestamp) > "2016-12-30" +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +#### A masked pattern was here #### +POSTHOOK: query: select cast("2016-12-30 00:00:01" as timestamp) > "2016-12-30" +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +#### A masked pattern was here #### +true diff --git serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorUtils.java serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorUtils.java index 51b529e..26b19f5 100644 --- serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorUtils.java +++ serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorUtils.java @@ -1133,6 +1133,9 @@ static Timestamp getTimestampFromString(String s) { s = s.substring(0, periodIdx + 10); } } + if (s.indexOf(' ') < 0) { + s = s.concat(" 00:00:00"); + } try { result = Timestamp.valueOf(s); } catch (IllegalArgumentException e) { diff --git serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/primitive/TestPrimitiveObjectInspectorUtils.java serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/primitive/TestPrimitiveObjectInspectorUtils.java index 1c00e16..ca37b1a 100644 --- serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/primitive/TestPrimitiveObjectInspectorUtils.java +++ serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/primitive/TestPrimitiveObjectInspectorUtils.java @@ -217,4 +217,10 @@ public void testgetTimestampWithSecondsInt() { .getPrimitiveJavaObjectInspector(PrimitiveCategory.TIMESTAMP); assertEquals("2015-02-07 15:01:22.123", gmtDateFormat.format(PrimitiveObjectInspectorUtils.getTimestamp(new Timestamp(1423321282123L), timestampOI, true))); } + + @Test + public void testGetTimestampFromString() { + DateFormat localDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + assertEquals("2015-02-07 00:00:00.000", localDateFormat.format(PrimitiveObjectInspectorUtils.getTimestampFromString("2015-02-07"))); + } }