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

Gregory Hart commented on CALCITE-2989:
---------------------------------------

[~jdw], you can pass in a timezone to the AvaticaResultSet constructor if you 
need a different default timezone than the system default. There's also the 
ResultSet.getTimestamp(int, Calendar) method for passing in a custom timezone. 
I tried to keep the same behavior when I made my changes, except in cases where 
the existing behavior was inconsistent or didn't match the JDBC APIs.

There's a unit test to verify that UTC works. I ran it on my machine where the 
default timezone is also PST, and it passed. Could you provide a similar unit 
test where the method provides the wrong result?
https://github.com/apache/calcite-avatica/commit/dbe9b1d8c2e53474eb40cfaf5721aceca3bdb57f#diff-1d2540d0c4f14c7f771799dfe85c865a8fb32b065498969a259fd13a6bfdf3daR1557

> Use ISO-8601 calendar when converting between java.sql types and UNIX 
> timestamps
> --------------------------------------------------------------------------------
>
>                 Key: CALCITE-2989
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2989
>             Project: Calcite
>          Issue Type: Bug
>          Components: avatica
>            Reporter: vinoyang
>            Assignee: Gregory Hart
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: avatica-1.23.0
>
>          Time Spent: 2h 10m
>  Remaining Estimate: 0h
>
> Converting java.sql types to unix timestamps requires extra steps to also 
> convert to the correct calendar. Unix timestamps should follow the proleptic 
> Gregorian calendar as defined by ISO-8601. Java uses the standard Gregorian 
> calendar for java.sql types and switches to the Julian calendar for dates 
> before the Gregorian shift.
> If we uses avatica's {{DateTimeUtils}} the dates less than 2299161 will cause 
> an error result in Flink table/sql , test code :
> {code:java}
> testAllApis(
>   "1500-04-30 12:00:00".cast(Types.SQL_TIMESTAMP),
>   "'1500-04-30 12:00:00'.cast(SQL_TIMESTAMP)",
>   "CAST('1500-04-30 12:00:00' AS TIMESTAMP)",
>   "1500-04-30 12:00:00.0")
> {code}
> result :
> {code:java}
> Expected :1500-04-30 12:00:00.0
> Actual :1500-04-20 12:00:00.0
> {code}
> another case is here : 
> https://issues.apache.org/jira/browse/FLINK-11935
> I find a key code snippet has been removed in CALCITE-1884 which caused this 
> issue :
> {code:java}
> if (j < 2299161) {
>    j = day + (153 * m + 2) / 5 + 365 * y + y / 4 - 32083;
> }
> {code}
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to