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

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

I see this in the patch:

{code:java}
      if ("12".equals(substring)) {
        substring = "0";
      }
{code}

Why is it reset to "0" if the value is "12"?

Also there is this existing code... what is this about and shouldn't a value 
here of 0 throw an Exception?

{code:java}
  private String formatNumericTemporal(int value, Token token) {
    ...
      if (token.temporalField == ChronoField.HOUR_OF_AMPM && value == 0) {
        value = 12;
      }
   ...
}
{code}

I'd also caution of doing this validation check in the {{parseNumericTemporal}} 
method.  The value is parsing correctly: the value is zero.  However, there 
should be another place in the code to check if this is a valid value for this 
Token type.

> 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