[
https://issues.apache.org/jira/browse/HIVE-3850?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13564350#comment-13564350
]
Pieterjan Vriends commented on HIVE-3850:
-----------------------------------------
>From the source code:
public IntWritable evaluate(Text dateString) {
if (dateString == null) {
return null;
}
try {
Date date = null;
try {
date = formatter1.parse(dateString.toString());
} catch (ParseException e) {
date = formatter2.parse(dateString.toString());
}
calendar.setTime(date);
result.set(calendar.get(Calendar.HOUR_OF_DAY));
return result;
} catch (ParseException e) {
return null;
}
}
public IntWritable evaluate(TimestampWritable t) {
if (t == null) {
return null;
}
calendar.setTime(t.getTimestamp());
result.set(calendar.get(Calendar.HOUR));
return result;
}
As you can see, the second evaluate() method returns the value of Calendar.HOUR
instead of Calendar.HOUR_OF_DAY.
> hour() function returns 12 hour clock value when using timestamp datatype
> -------------------------------------------------------------------------
>
> Key: HIVE-3850
> URL: https://issues.apache.org/jira/browse/HIVE-3850
> Project: Hive
> Issue Type: Bug
> Components: UDF
> Affects Versions: 0.9.0
> Reporter: Pieterjan Vriends
>
> Apparently UDFHour.java does have two evaluate() functions. One that does
> accept a Text object as parameter and one that does use a TimeStampWritable
> object as parameter. The first function does return the value of
> Calendar.HOUR_OF_DAY and the second one of Calendar.HOUR. In the
> documentation I couldn't find any information on the overload of the
> evaluation function. I did spent quite some time finding out why my statement
> didn't return a 24 hour clock value.
> Shouldn't both functions return the same?
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira