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

Sergey Nuyanzin commented on CALCITE-2324:
------------------------------------------

PR is https://github.com/apache/calcite/pull/728

> Extract seconds, minutes from date works not correct in some cases
> ------------------------------------------------------------------
>
>                 Key: CALCITE-2324
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2324
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.16.0
>            Reporter: Sergey Nuyanzin
>            Assignee: Julian Hyde
>            Priority: Major
>
> While working on tests for CALCITE-2303 faced with the next issue (do not fix 
> within 2303 as the fix does not need avatica update while 2303 does)
> {code:sql}select extract(second from date '2008-02-23');{code} returns 13
> I guess the issue is known because of the test is present in 
> _org.apache.calcite.sql.test.SqlOperatorBaseTest#testExtractDate_ within 
> _TODO_ block and with the comment {code:java}  if (TODO) {
>       // Looks like there is a bug in current execution code which returns 13
>       // instead of 0
>       tester.checkScalar(
>           "extract(second from date '2008-2-23')",
>           "0",
>           "BIGINT NOT NULL");
>     }{code}
> I deep dive into it and realized that the problem is that in case of DATE 
> extract works with days + in case of seconds, minute, hours there will be 
> used _org.apache.calcite.adapter.enumerable.RexImpTable#getFactor_. And 
> finally the result is 
> {noformat}number_of_days % 60000 / 1000L //for extract seconds{noformat}
> {noformat}number_of_days % 360000 / 1000L //for extract minutes{noformat}
> and yes {code}select extract(minute from date '1700-01-01');{code} returns -1



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to