[ https://issues.apache.org/jira/browse/DRILL-1051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16133080#comment-16133080 ]
Vitalii Diravka commented on DRILL-1051: ---------------------------------------- The issue is connected to the JDBC and converting of Joda DateTime instances to java.sql Date, Timestamp and Time instances for old dates: 1. For dates earlier than Gregorian cutover date (depends from timezone, usually 1582 year) https://www.timeanddate.com/calendar/julian-gregorian-switch.html 2. For LMT (Local Mean Time) dates (depends from timezone, usually earlier than 1883 year) https://www.timeanddate.com/time/change/usa/los-angeles?year=1883 Old behaviour: {code} 0: jdbc:drill:zk=local> select cast(to_timestamp('1581-12-01 23:32:01', 'yyyy-MM-dd HH:mm:ss') as date) as `DATE`, to_timestamp('1581-12-01 23:32:01', 'yyyy-MM-dd HH:mm:ss') as `TIMESTAMP`, cast(to_timestamp('1581-12-01 23:32:01', 'yyyy-MM-dd HH:mm:ss') as time) as `TIME`, timeofday() from (VALUES(1)); +-------------+------------------------+-----------+----------------------------------------------+ | DATE | TIMESTAMP | TIME | EXPR$3 | +-------------+------------------------+-----------+----------------------------------------------+ | 1581-11-20 | 1581-11-21 23:24:59.0 | 23:32:01 | 2017-08-18 06:10:36.542 America/Los_Angeles | +-------------+------------------------+-----------+----------------------------------------------+ 0: jdbc:drill:zk=local> select cast(to_timestamp('1883-11-16 01:32:01', 'yyyy-MM-dd HH:mm:ss') as date) as `DATE`, to_timestamp('1883-11-16 01:32:01', 'yyyy-MM-dd HH:mm:ss') as `TIMESTAMP`, cast(to_timestamp('1883-11-16 01:32:01', 'yyyy-MM-dd HH:mm:ss') as time) as `TIME`, timeofday() from (VALUES(1)); +-------------+------------------------+-----------+----------------------------------------------+ | DATE | TIMESTAMP | TIME | EXPR$3 | +-------------+------------------------+-----------+----------------------------------------------+ | 1883-11-15 | 1883-11-16 01:24:59.0 | 01:32:01 | 2017-08-18 06:04:33.512 America/Los_Angeles | +-------------+------------------------+-----------+----------------------------------------------+ 1 row selected (0.249 seconds) {code} After fix: {code} 0: jdbc:drill:zk=local> select cast(to_timestamp('1581-12-01 23:32:01', 'yyyy-MM-dd HH:mm:ss') as date) as `DATE`, to_timestamp('1581-12-01 23:32:01', 'yyyy-MM-dd HH:mm:ss') as `TIMESTAMP`, cast(to_timestamp('1581-12-01 23:32:01', 'yyyy-MM-dd HH:mm:ss') as time) as `TIME`, timeofday() from (VALUES(1)); +-------------+------------------------+-----------+----------------------------------------------+ | DATE | TIMESTAMP | TIME | EXPR$3 | +-------------+------------------------+-----------+----------------------------------------------+ | 1581-12-01 | 1581-12-01 23:32:01.0 | 23:32:01 | 2017-08-18 06:12:30.837 America/Los_Angeles | +-------------+------------------------+-----------+----------------------------------------------+ 0: jdbc:drill:zk=local> select cast(to_timestamp('1883-11-16 01:32:01', 'yyyy-MM-dd HH:mm:ss') as date) as `DATE`, to_timestamp('1883-11-16 01:32:01', 'yyyy-MM-dd HH:mm:ss') as `TIMESTAMP`, cast(to_timestamp('1883-11-16 01:32:01', 'yyyy-MM-dd HH:mm:ss') as time) as `TIME`, timeofday() from (VALUES(1)); +-------------+------------------------+-----------+----------------------------------------------+ | DATE | TIMESTAMP | TIME | EXPR$3 | +-------------+------------------------+-----------+----------------------------------------------+ | 1883-11-16 | 1883-11-16 01:32:01.0 | 01:32:01 | 2017-08-18 06:08:59.944 America/Los_Angeles | +-------------+------------------------+-----------+----------------------------------------------+ {code} > Casting timestamp as date gives wrong result for dates earlier than 1883 > ------------------------------------------------------------------------ > > Key: DRILL-1051 > URL: https://issues.apache.org/jira/browse/DRILL-1051 > Project: Apache Drill > Issue Type: Bug > Components: Functions - Drill > Reporter: Chun Chang > Assignee: Vitalii Diravka > Priority: Minor > Fix For: Future > > > #Wed Jun 18 10:27:23 PDT 2014 > git.commit.id.abbrev=894037a > It appears casting dates earlier than year 1797 gives wrong result: > 0: jdbc:drill:schema=dfs> select cast(c_timestamp as varchar(20)), > cast(c_timestamp as date) from data where c_row <> 12; > +------------+------------+ > | EXPR$0 | EXPR$1 | > +------------+------------+ > | 1997-01-02 03:04:05 | 1997-01-02 | > | 1997-01-02 00:00:00 | 1997-01-02 | > | 2001-09-22 18:19:20 | 2001-09-22 | > | 1997-02-10 17:32:01 | 1997-02-10 | > | 1997-02-10 17:32:00 | 1997-02-10 | > | 1997-02-11 17:32:01 | 1997-02-11 | > | 1997-02-12 17:32:01 | 1997-02-12 | > | 1997-02-13 17:32:01 | 1997-02-13 | > | 1997-02-14 17:32:01 | 1997-02-14 | > | 1997-02-15 17:32:01 | 1997-02-15 | > | 1997-02-16 17:32:01 | 1997-02-16 | > | 0097-02-16 17:32:01 | 0097-02-17 | > | 0597-02-16 17:32:01 | 0597-02-13 | > | 1097-02-16 17:32:01 | 1097-02-09 | > | 1697-02-16 17:32:01 | 1697-02-15 | > | 1797-02-16 17:32:01 | 1797-02-15 | > | 1897-02-16 17:32:01 | 1897-02-16 | > | 1997-02-16 17:32:01 | 1997-02-16 | > | 2097-02-16 17:32:01 | 2097-02-16 | > | 1996-02-28 17:32:01 | 1996-02-28 | > | 1996-02-29 17:32:01 | 1996-02-29 | > | 1996-03-01 17:32:01 | 1996-03-01 | > +------------+------------+ > 22 rows selected (0.201 seconds) -- This message was sent by Atlassian JIRA (v6.4.14#64029)