Github user ckadner commented on the issue: https://github.com/apache/spark/pull/13652 I think this is a good "best effort" fix for the round-trip conversion ```int -> java.sql.Date -> int```. It may also be worth testing the round-trip conversion ```java.sql.Date -> int -> java.sql.Date```: ```scala test("fromJavaDate toJavaDate in all timezones") { val debug = true val years = 1900 to 2020 val dates : Seq[String] = for { year <- years month <- 1 to 12 day <- 1 to 31 } yield new Date(year-1900, month-1, day).toString def testDateIsEqual(date: String): Boolean = { val d1 = Date.valueOf(date) val d2 = toJavaDate(fromJavaDate(d1)) d2 === d1 } def testStringEquals(date: String): Boolean = { val d1 = Date.valueOf(date) val d2 = toJavaDate(fromJavaDate(d1)) d2.toString === d1.toString } // make sure all converted Dates have a matching String representation (ignores time component) for (tz <- DateTimeTestUtils.ALL_TIMEZONES) { DateTimeTestUtils.withDefaultTimeZone(tz) { assert(dates.filterNot(testStringEquals _).isEmpty) } } // find Dates that don't convert to an equal Date (non-matching time component) val nonEqualDatesWithTZ = for { tz <- DateTimeTestUtils.ALL_TIMEZONES badDate <- DateTimeTestUtils.withDefaultTimeZone(tz) { dates.filterNot(testDateIsEqual _) } } yield (badDate, tz) // scalastyle:off println if (debug) { println(s"${nonEqualDatesWithTZ.size} incorrect conversions ${years.start}..${years.end}") nonEqualDatesWithTZ.foreach { case (d, t) => println(s"${d} in ${t.getID}") } } // scalastyle:on println } ``` Output when ```debug == true``` ``` 135 incorrect conversions 1900..2020: 1939-11-19 in Africa/Algiers 1900-01-01 in Africa/Ceuta 1943-03-21 in Africa/Windhoek 1922-01-01 in America/Bahia_Banderas 1922-01-01 in America/Cancun 1996-10-27 in America/Chihuahua 1997-10-26 in America/Chihuahua 1981-03-29 in America/Danmarkshavn 1982-03-28 in America/Danmarkshavn 1983-03-27 in America/Danmarkshavn 1984-03-25 in America/Danmarkshavn 1985-03-31 in America/Danmarkshavn 1986-03-30 in America/Danmarkshavn 1987-03-29 in America/Danmarkshavn 1988-03-27 in America/Danmarkshavn 1989-03-26 in America/Danmarkshavn 1990-03-25 in America/Danmarkshavn 1991-03-31 in America/Danmarkshavn 1992-03-29 in America/Danmarkshavn 1993-03-28 in America/Danmarkshavn 1994-03-27 in America/Danmarkshavn 1995-03-26 in America/Danmarkshavn 1965-10-31 in America/Dawson 1969-10-26 in America/Indiana/Tell_City 1970-10-25 in America/Indiana/Tell_City 1965-10-31 in America/Inuvik 1999-10-31 in America/Iqaluit 1945-09-30 in America/Juneau 1969-10-26 in America/Juneau 1970-10-25 in America/Juneau 1971-10-31 in America/Juneau 1972-10-29 in America/Juneau 1973-10-28 in America/Juneau 1974-10-27 in America/Juneau 1975-10-26 in America/Juneau 1976-10-31 in America/Juneau 1977-10-30 in America/Juneau 1978-10-29 in America/Juneau 1979-10-28 in America/Juneau 1981-10-25 in America/Juneau 1982-10-31 in America/Juneau 1922-01-01 in America/Mexico_City 1996-10-27 in America/Ojinaga 1997-10-26 in America/Ojinaga 1945-09-30 in America/Pangnirtung 1980-10-26 in America/Pangnirtung 1981-10-25 in America/Pangnirtung 1982-10-31 in America/Pangnirtung 1983-10-30 in America/Pangnirtung 1984-10-28 in America/Pangnirtung 1985-10-27 in America/Pangnirtung 1986-10-26 in America/Pangnirtung 1987-10-25 in America/Pangnirtung 1988-10-30 in America/Pangnirtung 1989-10-29 in America/Pangnirtung 1990-10-28 in America/Pangnirtung 1991-10-27 in America/Pangnirtung 1992-10-25 in America/Pangnirtung 1993-10-31 in America/Pangnirtung 1994-10-30 in America/Pangnirtung 1999-10-31 in America/Pangnirtung 1950-04-16 in America/Santarem 1945-09-30 in America/Sitka 1969-10-26 in America/Sitka 1970-10-25 in America/Sitka 1971-10-31 in America/Sitka 1972-10-29 in America/Sitka 1973-10-28 in America/Sitka 1974-10-27 in America/Sitka 1975-10-26 in America/Sitka 1976-10-31 in America/Sitka 1977-10-30 in America/Sitka 1978-10-29 in America/Sitka 1979-10-28 in America/Sitka 1980-10-26 in America/Sitka 1981-10-25 in America/Sitka 1982-10-31 in America/Sitka 1965-10-31 in America/Whitehorse 1900-01-01 in Antarctica/Casey 1900-01-01 in Antarctica/Davis 2009-10-18 in Antarctica/Davis 2011-10-28 in Antarctica/Davis 1900-01-01 in Antarctica/DumontDUrville 1900-01-01 in Antarctica/Mawson 1900-01-01 in Antarctica/Syowa 1900-01-01 in Antarctica/Vostok 2001-09-29 in Asia/Choibalsan 2002-09-28 in Asia/Choibalsan 2003-09-27 in Asia/Choibalsan 2004-09-25 in Asia/Choibalsan 2005-09-24 in Asia/Choibalsan 2006-09-30 in Asia/Choibalsan 1916-11-01 in Atlantic/Azores 1916-11-01 in Atlantic/Madeira 1917-10-21 in Atlantic/Reykjavik 1918-11-16 in Atlantic/Reykjavik 1919-11-16 in Atlantic/Reykjavik 1921-06-23 in Atlantic/Reykjavik 1965-10-31 in Canada/Yukon 1900-01-01 in Europe/Brussels 1900-01-01 in Europe/Gibraltar 1916-10-01 in Europe/Kaliningrad 1916-10-01 in Europe/Kaliningrad 1990-07-01 in Europe/Kiev 1990-07-01 in Europe/Kiev 1922-10-08 in Europe/Luxembourg 1924-10-05 in Europe/Luxembourg 1925-10-04 in Europe/Luxembourg 1926-10-03 in Europe/Luxembourg 1927-10-02 in Europe/Luxembourg 1928-10-07 in Europe/Luxembourg 1900-01-01 in Europe/Madrid 1992-09-27 in Europe/Minsk 1911-03-11 in Europe/Paris 1990-07-01 in Europe/Uzhgorod 1990-07-01 in Europe/Uzhgorod 1917-10-21 in Iceland 1918-11-16 in Iceland 1919-11-16 in Iceland 1921-06-23 in Iceland 1900-01-01 in Indian/Kerguelen 1922-01-01 in Mexico/General 1900-01-01 in Pacific/Apia 1950-01-02 in Pacific/Apia 2011-09-25 in Pacific/Apia 1900-01-01 in Pacific/Enderbury 1979-10-02 in Pacific/Enderbury 1900-01-01 in Pacific/Fakaofo 1901-01-02 in Pacific/Fakaofo 1900-01-01 in Pacific/Kiritimati 1979-10-02 in Pacific/Kiritimati 1911-03-11 in ECT 1900-01-01 in MIT 1950-01-02 in MIT 2011-09-25 in MIT ``` The extra debug stuff should be removed of course.
--- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. --- --------------------------------------------------------------------- To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org