java插入数据库日期,关于Java:插入最大日期(独立于数据库)

在我的本地设置中,我使用的是简单的H2数据库。"托管"解决方案将具有另一个(相似但不相同)数据库。

我需要在DateTime列中插入最大可能的日期。 我尝试使用

Instant.MAX

但是,这会在列中产生-169104626-12-11 20:08:15.99999999。

关于如何插入最大可能日期是否有可靠的选择?

Instant.MIN会导致什么?

这样的瞬间的象征意义是什么? 无限的未来?

为什么不插入31.12.9999 23:59:59,它可以作为常量存储在Java应用程序中?

实际上是-无限期将来,但不能为null-因为稍后可以使用> now <

也许从INT MAX:D中减去169104626

我正在寻找一个更通用的解决方案,而不是简单地插入我认为的最大日期-我喜欢使用现有的常量

它们在不同的sql服务器上不同。 例如,MSSQL和DB2使用9999作为最大年份,而postgresql有294276。postgresql.org/docs/9.2/static/datatype-datetime.html

max date (independent from database)

没有这样的事。尝试设置最大日期绝对取决于数据库。

SQL标准几乎没有涉及日期时间处理这一主题(不幸的是)。在各种数据库中,日期时间的数据类型和行为差异很大。各个数据库之间的最小值和最大值可能根本不同。即使在单个数据库中,各种日期时间数据类型的最小/最大范围也可能有很大不同。例如,某些数据库具有旧的专有日期时间类型以及行为较不相同的较新的更常见或标准类型。

Java本身具有非常不同的日期时间类型集:

麻烦的旧类型(java.util和java.sql)

明智设计的现代java.time类型。

这些的最小值/最大值不同。

Is there a solid option on how to insert a maximum possible date?

没有。

如果您尝试使用最大值作为某种标记(例如"不确定的未来日期")来避免NULL,则选择将来足够远的任意日期以超过任何合法值,但不能超过限制您可能要使用的任何数据库。在Java代码和数据库中为此值定义一个常数,并进行彻底记录。

我建议坚持四位数的年份,以避免超出范围的显示宽度,避免出现各种混乱和问题,例如破坏报告和GUI。 9999之类的东西。也许是2666,因为由于666的臭名昭著,它在人类读者中是如此引人注意。

在Stack Overflow中搜索诸如Java,min和max之类的词,以进行更多讨论。喜欢这个和这个和这个和这个。这个问题基本上是其他问题的重复。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值