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

James Taylor commented on PHOENIX-1756:
---------------------------------------

YOu'll need to encode as int instead of long and cast the % you're doing to an 
int, like this:
{code}
+    @Override
+    public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) {
+        Expression expression = getChildExpression();
+        if (!expression.evaluate(tuple, ptr)) {
+            return false;
+        }
+        if ( ptr.getLength() == 0) {
+            return true; //means null
+        }
+        long dateTime = expression.getDataType().getCodec().decodeLong(ptr, 
expression.getSortOrder());
+        int sec = (int)((dateTime/1000) % 60);
+        PDataType returnType = getDataType();
+        byte[] byteValue = new byte[returnType.getByteSize()];
+        returnType.getCodec().encodeInt(sec, byteValue, 0);
+        ptr.set(byteValue);
+        return true;
+    }
{code}

> Add Month() and Second() buildin functions
> ------------------------------------------
>
>                 Key: PHOENIX-1756
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-1756
>             Project: Phoenix
>          Issue Type: Improvement
>            Reporter: Alicia Ying Shu
>            Assignee: Alicia Ying Shu
>         Attachments: Phoenix-1756-v1.patch, Phoenix-1756.patch
>
>
> From Oracle doc: Month(date) and Second(date). Very similar to Year(date) 
> buildin. 
> MONTH(date)              An integer from 1 to 12 representing the month 
>                          component of date
> SECOND(time)             An integer from 0 to 59 representing the second 
>                          component of time



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to