[ 
https://issues.apache.org/jira/browse/HIVE-18304?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Hengyu Dai updated HIVE-18304:
------------------------------
    Description: 
for date type argument, datediff() use DateConverter to convert input to a java 
Date object, 
for example, a '2017-12-18' will get 2017-12-18T00:00:00.000+0800
for string type argument, datediff() use TextConverter to convert a string to 
date,
for '2012-01-01' we will get 2012-01-01T08:00:00.000+0800
now, datediff() will return a number less than the real date diff
we should use TextConverter to deal with date input too.

reproduce:
{code:java}
select datediff(cast('2017-12-18' as date), '2012-01-01'); --2177

select datediff('2017-12-18', '2012-01-01'); --2178
{code}


  was:
for date type argument, datediff() use DateConverter to convert input to a java 
Date object, 
for example, a '2017-12-18' will get 2017-12-18T00:00:00.000+0800
for string type argument, datediff() use TextConverter to convert a string to 
date,
for '2012-01-01' we will get 2012-01-01T08:00:00.000+0800
now, datediff() will return a number less than the real date diff

reproduce:
{code:java}
select datediff(cast('2017-12-18' as date), '2012-01-01'); --2177

select datediff('2017-12-18', '2012-01-01'); --2178
{code}



> datediff() UDF returns a wrong result when dealing with a (date, string) input
> ------------------------------------------------------------------------------
>
>                 Key: HIVE-18304
>                 URL: https://issues.apache.org/jira/browse/HIVE-18304
>             Project: Hive
>          Issue Type: Bug
>          Components: UDF
>            Reporter: Hengyu Dai
>            Assignee: Hengyu Dai
>            Priority: Minor
>
> for date type argument, datediff() use DateConverter to convert input to a 
> java Date object, 
> for example, a '2017-12-18' will get 2017-12-18T00:00:00.000+0800
> for string type argument, datediff() use TextConverter to convert a string to 
> date,
> for '2012-01-01' we will get 2012-01-01T08:00:00.000+0800
> now, datediff() will return a number less than the real date diff
> we should use TextConverter to deal with date input too.
> reproduce:
> {code:java}
> select datediff(cast('2017-12-18' as date), '2012-01-01'); --2177
> select datediff('2017-12-18', '2012-01-01'); --2178
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to