获取java.sql.date的最大和最小日期
我在任何地方都看到,为了获得我必须使用的日期的最小值和最大值:获取java.sql.date的最大和最小日期,java,sql,date,Java,Sql,Date,我在任何地方都看到,为了获得我必须使用的日期的最小值和最大值: Date dateModificationMin = new Date( Long.MIN_VALUE ); Date dateModificationMax = new Date( Long.MAX_VALUE ); 但我是在java.sql.date返回时执行的: 055-12-02为最小日期 994-08-17为最长日期 如何获取java.sql.date的最大值和最小值?如果对java.util.date执行代码,您将获得
Date dateModificationMin = new Date( Long.MIN_VALUE );
Date dateModificationMax = new Date( Long.MAX_VALUE );
但我是在java.sql.date返回时执行的:
055-12-02为最小日期
994-08-17为最长日期
如何获取java.sql.date的最大值和最小值?如果对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,因此可能存在相同的问题
与
看看日期在-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或其他语言中找不到。数据库之间对可能的日期时间值的限制差别很大
例如:
- 范围从公元前4713年到公元294276年
- 类型的范围为“1970-01-01 00:00:01.000000”到“2038-01-19 03:14:07.99999”UTC。
值的范围为“1000-01-01 00:00:00.000000”到“9999-12-31 23:59:59.99999”DATETIME
- 因此,将日期时间值存储为字符串(“YYYY-MM-DD HH:MM:SS.SSS”)。因此,如果它只跟踪一年中的4位数字(我不知道),那么大概只限于9999年
- 从1753年1月1日到9999年12月31日,准确度为百分之三百秒,即3.33毫秒。我找不到他们的主要参考页面,也找不到刚刚发布的版本3的更新
- 类型的范围为0001-01-01至9999-12-31至1999年1月1日,1 CE至1999年12月31日,时间为00:00:00至23:59:59.999999(注意分数的7位数字,比微秒细,但比纳秒粗)。还有1753年1月1日至9999年12月31日的时间,以及一天中的时间00:00:00至23:59:59.997
关于堆栈溢出的其他帖子表明,对于查找日期时间值作为未知或尚未确定值的占位符(我认为这是问题的目的)这个问题,没有一个简单明了的答案。您能解释一下您的用例吗
java.sql.Date
是一个基于Date
类的糟糕实现,而且在任何情况下,每个DBMS都有自己的Date
含义及其范围的定义。那么你为什么需要这些价值观呢?这是为了调查一些客户。管理员用户可以选择用户创建的最大和最小日期。但他不必这么做。因此,如果他不选择,我必须在我的sql请求中输入最短和最长日期。那么,为什么不为管理员不限制日期的情况构建一个不同的查询?@Kvasir用户帐户的最短创建日期将是您首次启动系统时。最大值为当前时刻。
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
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