我到处都看到了我必须使用的最小和最大日期:
Date dateModificationMin = new Date( Long.MIN_VALUE );
Date dateModificationMax = new Date( Long.MAX_VALUE );
Run Code Online (Sandbox Code Playgroud)
但我在我的java.sql.date上做了它返回:055-12-02为最短日期994-08-17为最大日期
如何获取java.sql.date的最大值和最小值?
答案是特定于数据库的,不能在Java或JDBC或java.sql类型中找到.数据库之间可能的日期 - 时间值的限制差别很大.
例如:
TIMESTAMP WITH TIME ZONE公布范围为公元前4713年至公元294276年.TIMESTAMP类型的范围为'1970-01-01 00:00:01.000000'到'2038-01-19 03:14:07.999999'UTC.DATETIME值的范围是'1000-01-01 00:00:00.000000'到'9999-12-31 23:59:59.999999',9999如果它只跟踪一年的4位数(我不知道).TIMESTAMP从1753年1月1日到9999年12月31日,准确度为百分之三秒或3.33毫秒.我找不到他们的主要参考页面,也没有更新刚刚宣布的版本3.datetime2类型的范围为0001-01-01到9999-12-31到CE 1月1,1日到9999年12月31日,时间从00:00:00到23:59:59.9999999(注意7位数字)分数,小于微秒但比纳秒更粗糙.也有datetime带范围内 1753年1月1日至9999年12月31日,并通过23时间的日00:00:00:59:59.997.我建议您在将来和过去选择任意点,而不是确定绝对限制,并将其用作限制.远远超出了在软件和应用程序的生命周期中遇到的价值,但远远超出了大多数数据库的限制.将限制硬编码为应用程序中的常量,例如Java中的枚举.
Stack Overflow上的其他帖子表明,对于查找日期时间值以用作未知或尚未确定的值的占位符(我认为这是问题背后的目的)的问题,没有简单的简单答案.