-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/6027/
-----------------------------------------------------------

Review request for hive and Ashutosh Chauhan.


Description
-------

Parameters
 This function overloads the current DateDiff(expr1, expr2) by adding another 
parameter to specify the units. It takes 3 parameters. The first two are 
timestamps, and the formats accepted are:
 yyyy-MM-dd
 yyyy-MM-dd HH:mm:ss
 yyyy-MM-dd HH:mm:ss.milli

These are the formats accepted by the current DateDiff(expr1, expr2) function 
and allow for that consistency. The accepted data types for the timestamp will 
be Text, TimestampWritable, Date, and String, just as with the already existing 
function.

The third parameter is the units the user wants the response to be in. 
Acceptable units are:
 Microsecond
 Millisecond
 Second
 Minute
 Hour
 Day
 Week
 Month
 Quarter
 Year

When calculating the difference, the full timestamp is used when the specified 
unit is hour or smaller (microsecond, millisecond, second, minute, hour), and 
only the date part is used if the unit is day or larger (day, week, month, 
quarter, year). If for the smaller units the time is not specified and the 
format yyyy-MM-dd is used, the time 00:00:00.0 is used. Leap years are 
accounted for by the Calendar class in Java, which inherently addresses the 
issue.

The assumption is made that all these time parameters are in the same time zone.

Return Value
 The function returns expr1 - expr2 expressed as an int in the units specified.

Hive vs. SQL
 SQL also has a DateDiff() function with some more acceptable units. The order 
of parameters is different between SQL and Hive. The reason for this is that 
Hive already has a DateDiff() function with the same first two parameters, and 
having this order here allows for that consistency within Hive.

Example Query
 hive > DATEDIFF(DATE_FIELD, '2012-06-01', ‘day’); 

Diagnostic Error Messages
 Invalid table alias or column name reference
 Table not found


This addresses bug HIVE-3216.
    https://issues.apache.org/jira/browse/HIVE-3216


Diffs
-----

  trunk/data/files/datetable.txt PRE-CREATION 
  trunk/data/files/timestamptable.txt PRE-CREATION 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDateDiff.java 1362724 
  trunk/ql/src/test/queries/clientnegative/udf_datediff.q PRE-CREATION 
  trunk/ql/src/test/queries/clientpositive/udf_datediff.q 1362724 
  trunk/ql/src/test/results/clientnegative/udf_datediff.q.out PRE-CREATION 
  trunk/ql/src/test/results/clientpositive/udf_datediff.q.out 1362724 

Diff: https://reviews.apache.org/r/6027/diff/


Testing
-------

yes


Thanks,

Shefali Vohra

Reply via email to