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