[ 
https://issues.apache.org/jira/browse/DRILL-7926?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17377365#comment-17377365
 ] 

ASF GitHub Bot commented on DRILL-7926:
---------------------------------------

oleg-zinovev commented on a change in pull request #2268:
URL: https://github.com/apache/drill/pull/2268#discussion_r666157134



##########
File path: 
exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/DateTypeFunctions.java
##########
@@ -424,26 +424,35 @@ public void eval() {
     public static class AgeTimeStampFunction implements DrillSimpleFunc {
         @Param TimeStampHolder left;
         @Param TimeStampHolder right;
+        @Workspace org.joda.time.PeriodType periodType;
         @Output IntervalHolder out;
 
         @Override
         public void setup() {
+            periodType = org.joda.time.PeriodType.forFields(
+                new org.joda.time.DurationFieldType[] {
+                    org.joda.time.DurationFieldType.months(),
+                    org.joda.time.DurationFieldType.days(),
+                    org.joda.time.DurationFieldType.millis()
+                }
+            );
         }
 
         @Override
         public void eval() {
-            long diff = left.value - right.value;
-            long days = diff / 
org.apache.drill.exec.vector.DateUtilities.daysToStandardMillis;
-            out.months = (int) (days / 
org.apache.drill.exec.vector.DateUtilities.monthToStandardDays);
-            out.days = (int) (days % 
org.apache.drill.exec.vector.DateUtilities.monthToStandardDays);
-            out.milliseconds = (int) (diff % 
org.apache.drill.exec.vector.DateUtilities.daysToStandardMillis);
+            org.joda.time.Period interval = new 
org.joda.time.Period(right.value, left.value, periodType);

Review comment:
       There is no class in Java Time API that would allow working 
simultaneously with months and hours / minutes / seconds. However, I can try to 
rewrite the fix using java.time.Period and java.time.Duration.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


> The " age " function is not working properly.
> ---------------------------------------------
>
>                 Key: DRILL-7926
>                 URL: https://issues.apache.org/jira/browse/DRILL-7926
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Functions - Drill
>    Affects Versions: 1.17.0, 1.18.0
>            Reporter: Александр Глухов
>            Priority: Blocker
>         Attachments: image-2021-05-13-16-17-21-154.png, screenshot-1.png, 
> screenshot-2.png
>
>
> The " age " function is not working properly.
>  *Playback steps*
> {code:sql}
> select extract(year from m. "years") `years`  from (select age('2021-05-13', 
> '2007-07-02') `years") m{code}
> *Expected result* 13.
> *Actual result* 14.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to