[ https://issues.apache.org/jira/browse/HIVE-11812?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14985125#comment-14985125 ]
Chetna Chaudhari commented on HIVE-11812: ----------------------------------------- I am able to reproduce the issue with given steps. More details are: 1) Issue occurs only with 'date' datatype. 2) Issue is only with dates with difference less than 0. i.e all smaller dates. 3) datediff() function is returning (expected_result + 1) in all wrong cases. sample test queries below: {{select datediff(c2, '2015-09-13') from t;}} --> returned -1 expected -2 {{select datediff(c2, '2015-09-12') from t;}} --> returned -2 expected -3 I am debugging it further. Seems issue with converter, I have tested {{evaluate(Date date, Date date2)}} method, its working fine. > datediff sometimes returns incorrect results when called with dates > ------------------------------------------------------------------- > > Key: HIVE-11812 > URL: https://issues.apache.org/jira/browse/HIVE-11812 > Project: Hive > Issue Type: Bug > Components: UDF > Affects Versions: 2.0.0 > Reporter: Nicholas Brenwald > Priority: Minor > > DATEDIFF returns an incorrect result when one of the arguments is a date > type. > The Hive Language Manual provides the following signature for datediff: > {code} > int datediff(string enddate, string startdate) > {code} > I think datediff should either throw an error (if date types are not > supported), or return the correct result. > To reproduce, create a table: > {code} > create table t (c1 string, c2 date); > {code} > Assuming you have a table x containing some data, populate table t with 1 row: > {code} > insert into t select '2015-09-15', '2015-09-15' from x limit 1; > {code} > Then run the following 12 test queries: > {code} > select datediff(c1, '2015-09-14') from t; > select datediff(c1, '2015-09-15') from t; > select datediff(c1, '2015-09-16') from t; > select datediff('2015-09-14', c1) from t; > select datediff('2015-09-15', c1) from t; > select datediff('2015-09-16', c1) from t; > select datediff(c2, '2015-09-14') from t; > select datediff(c2, '2015-09-15') from t; > select datediff(c2, '2015-09-16') from t; > select datediff('2015-09-14', c2) from t; > select datediff('2015-09-15', c2) from t; > select datediff('2015-09-16', c2) from t; > {code} > The below table summarises the result. All results for column c1 (which is a > string) are correct, but when using c2 (which is a date), two of the results > are incorrect. > || Test || Expected Result || Actual Result || Passed / Failed || > |datediff(c1, '2015-09-14')| 1 | 1| Passed | > |datediff(c1, '2015-09-15')| 0 | 0| Passed | > |datediff(c1, '2015-09-16') | -1 | -1| Passed | > |datediff('2015-09-14', c1) | -1 | -1| Passed | > |datediff('2015-09-15', c1)| 0 | 0| Passed | > |datediff('2015-09-16', c1)| 1 | 1| Passed | > |datediff(c2, '2015-09-14')| 1 | 0| {color:red}Failed{color} | > |datediff(c2, '2015-09-15')| 0 | 0| Passed | > |datediff(c2, '2015-09-16') | -1 | -1| Passed | > |datediff('2015-09-14', c2) | -1 | 0 | {color:red}Failed{color} | > |datediff('2015-09-15', c2)| 0 | 0| Passed | > |datediff('2015-09-16', c2)| 1 | 1| Passed | -- This message was sent by Atlassian JIRA (v6.3.4#6332)