[NO ISSUE][FUN] Drop fractional millis digits after 3rd precision

- user model changes: no
- storage format changes: no
- interface changes: no

Details: Modified DateFormatUtils reader to accept more
than 3 digits number as millisecond. Only digits upto
3 decimal value is maintained.

Change-Id: I03cfd5501ab14449c4bca74fe51432286e7aa3e5
Reviewed-on: https://asterix-gerrit.ics.uci.edu/3146
Reviewed-by: Michael Blow <mblow@apache.org>
Integration-Tests: Michael Blow <mblow@apache.org>
Tested-by: Michael Blow <mblow@apache.org>
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DateTimeFormatUtils.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DateTimeFormatUtils.java
index 98abb97..5e8ee90 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DateTimeFormatUtils.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DateTimeFormatUtils.java
@@ -585,6 +585,13 @@
                     } else if (processState == DateTimeProcessState.SECOND) {
                         sec = parsedValue;
                     } else if (processState == DateTimeProcessState.MILLISECOND) {
+                        //read remaining millis values
+                        while (dataStringPointer < dataLength && data[dataStart + dataStringPointer] >= '0'
+                                && data[dataStart + dataStringPointer] <= '9') {
+                            //parsedValue = parsedValue * 10 + (data[dataStart + dataStringPointer] - '0');
+                            dataStringPointer++;
+                            processFieldsCount++;
+                        }
                         ms = parsedValue;
                         for (int i = processFieldsCount; i < 3; i++) {
                             ms *= 10;