Если вы делаете код на java.util.Date, вы получите
dateModificationMin = Sun Dec 02 17:47:04 CET 292269055
dateModificationMax = Sun Aug 17 08:12:55 CET 292278994
я предполагаю, дата с отрицательной длинной меткой времени работает неправильно, поэтому минимальная дата
new Date(0)== Thu Jan 01 01:00:00 CET 1970
Поскольку java.sql.date расширяет java.util.Date, проблема есть, вероятно, то же
с
long timestamp = -10;
for (int i = 0; i < 20; i++) {
System.out.println("timestamp = " + timestamp + " date = " + (new Date(timestamp)));
timestamp*=10;
}
вы получите:
timestamp = -10 date = Thu Jan 01 00:59:59 CET 1970
timestamp = -100 date = Thu Jan 01 00:59:59 CET 1970
timestamp = -1000 date = Thu Jan 01 00:59:59 CET 1970
timestamp = -10000 date = Thu Jan 01 00:59:50 CET 1970
timestamp = -100000 date = Thu Jan 01 00:58:20 CET 1970
timestamp = -1000000 date = Thu Jan 01 00:43:20 CET 1970
timestamp = -10000000 date = Wed Dec 31 22:13:20 CET 1969
timestamp = -100000000 date = Tue Dec 30 21:13:20 CET 1969
timestamp = -1000000000 date = Sat Dec 20 11:13:20 CET 1969
timestamp = -10000000000 date = Sun Sep 07 07:13:20 CET 1969
timestamp = -100000000000 date = Mon Oct 31 15:13:20 CET 1966
timestamp = -1000000000000 date = Sun Apr 24 23:13:20 CET 1938
timestamp = -10000000000000 date = Mon Feb 10 07:13:20 CET 1653
timestamp = -100000000000000 date = Thu Feb 26 15:13:20 CET 1200
timestamp = -1000000000000000 date = Tue Nov 16 23:13:20 CET 29720
timestamp = -10000000000000000 date = Sun Feb 01 07:13:20 CET 314912
timestamp = -100000000000000000 date = Mon Mar 08 15:13:20 CET 3166840
timestamp = -1000000000000000000 date = Sun Feb 24 23:13:20 CET 31686119
посмотреть, как даты идут Crasy после -1 * 10^15 также с java.sql.Date:
timestamp = -10000000000000 date = 1653-02-10
timestamp = -100000000000000 date = 1200-02-26
timestamp = -1000000000000000 date = 720-11-16
timestamp = -10000000000000000 date = 912-02-01
timestamp = -100000000000000000 date = 840-03-08
timestamp = -1000000000000000000 date = 119-02-24
timestamp = 8446744073709551616 date = 634-03-09
timestamp = -7766279631452241920 date = 582-01-06
так здесь не так !! : D
Можете ли вы объяснить свой прецедент? 'java.sql.Date' - плохая реализация, основанная на классе' Date', и в любом случае каждая СУБД имеет свое собственное определение того, что означает 'Date', и каков ее диапазон. Итак, зачем вам эти ценности? – RealSkeptic
Это для исследования некоторых клиентов. Администратор может выбрать максимальную и минимальную дату создания пользователя. Но он не должен этого делать. Поэтому в случае, когда он не выбирает, мне нужно указать минимальную и максимальную дату в моем запросе sql. – Kvasir
Так почему бы вам не создать другой запрос, если администратор не ограничивает дату? – RealSkeptic