Skip to content
This repository was archived by the owner on May 9, 2024. It is now read-only.

Commit 0e30c0a

Browse files
committed
Hive compatibility
1 parent cfbaed7 commit 0e30c0a

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/DateTimeUtils.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,12 +277,18 @@ object DateTimeUtils {
277277
}
278278
segments(i) = currentSegmentValue
279279

280+
// Hive compatibility 2011-05-06 07:08:09.1000 == 2011-05-06 07:08:09.1
281+
if (digitsMilli == 4) {
282+
segments(6) = segments(6) / 10
283+
}
284+
280285
// 18:3:1.1 is equals to 18:3:1:100
281286
if (digitsMilli == 1) {
282287
segments(6) = segments(6) * 100
283288
} else if (digitsMilli == 2) {
284289
segments(6) = segments(6) * 10
285290
}
291+
286292
if (segments(0) < 0 || segments(0) > 9999 || segments(1) < 1 || segments(1) > 12 ||
287293
segments(2) < 1 || segments(2) > 31 || segments(3) < 0 || segments(3) > 23 ||
288294
segments(4) < 0 || segments(4) > 59 || segments(5) < 0 || segments(5) > 59 ||

sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/util/DateTimeUtilsSuite.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,10 @@ class DateTimeUtilsSuite extends SparkFunSuite {
128128
test("string to timestamp") {
129129

130130
var c = Calendar.getInstance()
131+
c.set(2011, 4, 6, 7, 8, 9)
132+
c.set(Calendar.MILLISECOND, 100)
133+
assert(DateTimeUtils.stringToTimestamp(UTF8String.fromString("2011-05-06 07:08:09.1000")) ==
134+
new Timestamp(c.getTimeInMillis))
131135
c.set(1969, 11, 31, 16, 0, 0)
132136
c.set(Calendar.MILLISECOND, 0)
133137
assert(DateTimeUtils.stringToTimestamp(UTF8String.fromString("1969-12-31 16:00:00")) ==

0 commit comments

Comments
 (0)