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