【问题标题】:Can I store a date in h2 database using long data type for date field in entity object?我可以使用实体对象中日期字段的长数据类型将日期存储在 h2 数据库中吗?
【发布时间】:2022-01-22 20:03:26
【问题描述】:

我是 Spring Boot 的新手,正在做一个项目,最近一位经验丰富的开发人员告诉我,在创建实体表时,它有一个应该处理日期的字段,最好的方法是使用 long,像这样:

 private Long deliveryDate;

问题是我以前从未见过这样的事情,我不明白这应该如何工作,而且我在任何地方都找不到答案,所以你们认为你们中的一些人可以帮帮我吗?

【问题讨论】:

  • 我非常质疑他的“最佳方法”。它是日期还是日期时间?是否涉及时区(如果是日期时间)。为什么他们不使用数据库的本机数据类型?您不能只说“这是最好的,使用它”而不解释为什么它是“最好的”。那是糟糕的软件工程。
  • @Kayaman 我的问题是我是否可以使用 long 而不是 date 或 datetime,或 localdate 或类似的东西
  • 是的,但仅仅因为你可以,并不一定意味着你应该。 Timestamp 本质上是一个长值。
  • @Kayaman 说我还想用long,具体应该怎么做?
  • 以同样的方式持久化任何 long 值。您只需使用 Long 而不是实际有用的日期类,每次需要使用它时进行转换。

标签: java spring spring-boot date


【解决方案1】:

这位开发人员可能指的是即时,即时间线上的某个点,事物(可能是订单)被交付。

瞬间的常用表示法是 Unix 时间戳。这是自 1970 年 1 月 1 日午夜 UTC 以来的秒数。这个数字不依赖于时区。

我会使用Instant 而不是Long,因为这是代表这样一个瞬间的类型。我不确定它是否由 Spring Boot 自动连接,但如果遇到问题,您可能必须添加 JSR 310 模块。 Here is more information.

【讨论】:

  • 它可以在没有任何其他注释的情况下工作,还是应该只使用instant而不是long?
猜你喜欢
  • 1970-01-01
  • 2011-02-25
  • 1970-01-01
  • 1970-01-01
  • 2017-06-07
  • 2017-05-31
  • 1970-01-01
  • 2013-06-24
  • 2019-12-19
相关资源
最近更新 更多