[
https://issues.apache.org/jira/browse/CALCITE-2989?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Gregory Hart updated CALCITE-2989:
----------------------------------
Description:
Unix timestamps should follow the proleptic Gregorian calendar as defined by
ISO-8601. Java uses the standard Gregorian calendar for java.sql types which
switch to the Julian calendar for dates before the Gregorian cutoff.
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}
was:
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}
> 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
> Time Spent: 20m
> Remaining Estimate: 0h
>
> Unix timestamps should follow the proleptic Gregorian calendar as defined by
> ISO-8601. Java uses the standard Gregorian calendar for java.sql types which
> switch to the Julian calendar for dates before the Gregorian cutoff.
> 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)