[ 
https://issues.apache.org/jira/browse/HIVE-22763?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17043135#comment-17043135
 ] 

David Mollitor commented on HIVE-22763:
---------------------------------------

[~klcopp] OK.  Please add some comments in the code about this and I'll grant a 
+1 :)

Also note that since the "exceptions to the rule" perform an early return (or 
throw an exception), there does not need to be if/else statement.

{code:java}
   // exceptions to the rule

   // Needs a comment (but can be left for a different day since it's outside 
the scope of this path)
    if (token.temporalField == ChronoField.AMPM_OF_DAY) {
      return substring.toLowerCase().startsWith("a") ? AM : PM;
    }

    // Needs a comment explaining why "12" returns 0 and "0" throws an exception
    if (token.temporalField == ChronoField.HOUR_OF_AMPM) {
      if ("12".equals(substring)) {
        return 0;
      }
      if ("0".equals(substring)) {
        throw new IllegalArgumentException("Value of hour of day (hh/hh12) in 
input is 0. "
            + "The value should be between 1 and 12.");
      }
    }
{code}

> 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, HIVE-22763.02.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