我正在使用 Spring Boot 和 HSQLDB 文件, 当我使用时:
calendar.setTimeInMillis(-9223372036854775808L);
calendar.setTime(new Date(Long.MIN_VALUE));
并存储模型,
在我调用休息客户端后,我得到无效日期,当我检查它时,它返回一些正值而不是负值:|我应该使用什么作为 min_Value。
我认为这可能是SQL问题,我将临时变量类型从时间跨度更改为日期,但没有再次工作,我不再确定这个问题是什么情况,以及我应该使用什么nuber,每个人都在谈论关于最小值,有人谈到-8.......L左右,这在JS中也可以工作,但在这里也不起作用:|
最佳答案
避免古老的日期时间值
不使用该最小数字作为日期值的原因有很多。正如所评论的,标准 SQL 不允许如此古老的日期。据我所知,没有数据库实现支持该值。使用日期时间作为历史值充满了问题和问题,而且是不明智的。
使用纪元作为标志值
如果您正在寻找任意值用作标志,例如“无预期值”,同时避免使用空值,那么我建议使用 Java 和 Unix epoch 1970 年的第一个时刻 UTC 。如果您知道您的系统永远不会将任何早前的日期时间存储为有效值,那么这将很有效。 1970-01-01T00:00:00Z
很容易被许多程序员、DBA 和系统管理员识别为常见纪元,因此可能是一个特殊值。
java.time
避免使用Date
和Calendar
类。这些麻烦的类及其 sibling 现在已被遗留下来,并被 java.time 类取代。
这些类包含该纪元值的常量:Instant.EPOCH
类似问题:Minimum date in Java
关于DB/Rest 支持的 Java 日历/日期最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40841551/