[ https://issues.apache.org/jira/browse/HIVE-22763?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17039877#comment-17039877 ]
Karen Coppage commented on HIVE-22763: -------------------------------------- Hi [~belugabehr] , many thanks for taking a look! The reason for the 0-12 conversion is that ChronoField._HOUR_OF_AMPM's_ range is 0..11, while the SQL range is 1-12 (or rather 12, 1..11). So when parsing, we have to convert 12s to 0s and when formatting, 0s to 12s. Regarding doing the validation check in parseNumericTemporal: I'm pretty sure this is a unique case, that {code:java} ldt.with(token.temporalField, value);{code} would parse (HOUR_OF_AMPM, 0) input but the SQL spec doesn't allow it. In the interest of efficiency, I don't think it's worth moving elsewhere. > 0 is accepted in 12-hour format during timestamp cast > ----------------------------------------------------- > > Key: HIVE-22763 > URL: https://issues.apache.org/jira/browse/HIVE-22763 > Project: Hive > Issue Type: Bug > Components: HiveServer2 > Reporter: Karen Coppage > Assignee: Karen Coppage > Priority: Minor > Fix For: 4.0.0 > > Attachments: HIVE-22763.01.patch, HIVE-22763.01.patch, > HIVE-22763.01.patch, HIVE-22763.01.patch, HIVE-22763.01.patch, > HIVE-22763.01.patch > > > Having a timestamp string in 12-hour format can be parsed if the hour is 0, > however, based on the [design > document|https://docs.google.com/document/d/1V7k6-lrPGW7_uhqM-FhKl3QsxwCRy69v2KIxPsGjc1k/edit], > it should be rejected. > h3. How to reproduce > Run {code}select cast("2020-01-01 0 am 00" as timestamp format "yyyy-mm-dd > hh12 p.m. ss"){code} > It shouldn' t be parsed, as the hour component is 0. > h3. Spec > ||Pattern||Meaning||Additional details|| > |HH12|Hour of day (1-12)|Same as HH| > |HH|Hour of day (1-12)|{panel:borderStyle=none} > - One digit inputs are possible in a string to datetime conversion but needs > to be surrounded by separators. > - In a datetime to string conversion one digit hours are prefixed with a zero. > - Error if provided hour is not between 1 and 12. > - Displaying an unformatted timestamp in Impala uses the HH24 format > regardless if it was created using HH12. > - If no AM/PM provided then defaults to AM. > - In string to datetime conversion, conflicts with SSSSS and > HH24.{panel:borderStyle=none}| -- This message was sent by Atlassian Jira (v8.3.4#803005)