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

Julian Hyde commented on CALCITE-1884:
--------------------------------------

It's difficult to make claims about the behavior of java.sql.Date because a lot 
of operations (e.g. extracting days of the week, converting to a string) occur 
in the context of a calendar, usually GregorialCalendar, and/or a locale.

One can run a SQL query, convert the results to a string, and examine the 
results in a context where no Java is involved. The SQL standard is written in 
those terms. As I said in CALCITE-1832, It follows from the SQL standard that 
{{CAST(DATE '1752-09-20' - INTERVAL '10' DAY AS VARCHAR(10))}} should return 
the string '1752-09-10'. I think your change breaks that.

If you want a function that is consistent with Java's internal representation 
of dates, maybe you need a new function. That was not the goal of this function.

> DateTimeUtils produces incorrect results for days before Gregorian cutovers
> ---------------------------------------------------------------------------
>
>                 Key: CALCITE-1884
>                 URL: https://issues.apache.org/jira/browse/CALCITE-1884
>             Project: Calcite
>          Issue Type: Bug
>          Components: avatica
>    Affects Versions: 1.13.0
>            Reporter: Haohui Mai
>            Assignee: Haohui Mai
>
> dateStringToUnixDate() / unixDateToString() do not return consistent result.
> The following test fails:
> {noformat}
>   @Test public void testUnixDate() {
>     int days = DateTimeUtils.dateStringToUnixDate("1500-04-30");
>     assertEquals("1500-04-30", DateTimeUtils.unixDateToString(days));
>   }
> {noformat}



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

Reply via email to