[ https://issues.apache.org/jira/browse/HIVE-25576?focusedWorklogId=726186&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-726186 ]
ASF GitHub Bot logged work on HIVE-25576: ----------------------------------------- Author: ASF GitHub Bot Created on: 14/Feb/22 09:18 Start Date: 14/Feb/22 09:18 Worklog Time Spent: 10m Work Description: zabetak commented on pull request #2690: URL: https://github.com/apache/hive/pull/2690#issuecomment-1038843062 Please bot keep this open :) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: gitbox-unsubscr...@hive.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org Issue Time Tracking ------------------- Worklog Id: (was: 726186) Time Spent: 2h 40m (was: 2.5h) > Add config to parse date with older date format > ----------------------------------------------- > > Key: HIVE-25576 > URL: https://issues.apache.org/jira/browse/HIVE-25576 > Project: Hive > Issue Type: Improvement > Affects Versions: 3.1.0, 3.0.0, 3.1.1, 3.1.2, 4.0.0 > Reporter: Ashish Sharma > Assignee: Ashish Sharma > Priority: Major > Labels: pull-request-available > Time Spent: 2h 40m > Remaining Estimate: 0h > > *History* > *Hive 1.2* - > VM time zone set to Asia/Bangkok > *Query* - SELECT FROM_UNIXTIME(UNIX_TIMESTAMP('1800-01-01 00:00:00 > UTC','yyyy-MM-dd HH:mm:ss z')); > *Result* - 1800-01-01 07:00:00 > *Implementation details* - > SimpleDateFormat formatter = new SimpleDateFormat(pattern); > Long unixtime = formatter.parse(textval).getTime() / 1000; > Date date = new Date(unixtime * 1000L); > https://docs.oracle.com/javase/8/docs/api/java/util/Date.html . In official > documentation they have mention that "Unfortunately, the API for these > functions was not amenable to internationalization and The corresponding > methods in Date are deprecated" . Due to that this is producing wrong result > *Master branch* - > set hive.local.time.zone=Asia/Bangkok; > *Query* - SELECT FROM_UNIXTIME(UNIX_TIMESTAMP('1800-01-01 00:00:00 > UTC','yyyy-MM-dd HH:mm:ss z')); > *Result* - 1800-01-01 06:42:04 > *Implementation details* - > DateTimeFormatter dtformatter = new DateTimeFormatterBuilder() > .parseCaseInsensitive() > .appendPattern(pattern) > .toFormatter(); > ZonedDateTime zonedDateTime = > ZonedDateTime.parse(textval,dtformatter).withZoneSameInstant(ZoneId.of(timezone)); > Long dttime = zonedDateTime.toInstant().getEpochSecond(); > *Problem*- > Now *SimpleDateFormat* has been replaced with *DateTimeFormatter* which is > giving the correct result but it is not backword compatible. Which is causing > issue at time for migration to new version. Because the older data written is > using Hive 1.x or 2.x is not compatible with *DateTimeFormatter*. > *Solution* > Introduce an config "hive.legacy.timeParserPolicy" with following values - > 1. *True*- use *SimpleDateFormat* > 2. *False* - use *DateTimeFormatter* > Note: apache spark also face the same issue > https://issues.apache.org/jira/browse/SPARK-30668 -- This message was sent by Atlassian Jira (v8.20.1#820001)