[ 
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)

Reply via email to