数据类型建议在oracle和java中保存datetime

问题描述 投票:0回答:2

我在oracle表中添加了一列(名称updatedAt)来保存更新的日期时间。

  1. 我应该选择什么数据类型 - Oracle 中的日期还是时间戳?

  2. 要在Java中为此表创建模型/域类,我应该为此列使用java.sql.Timestamp还是java.time.Instant。或者还有其他更好的、推荐的数据类型可以在 Java 中使用吗?我使用的是java 17。

请建议java和oracle的数据类型来保存日期和时间。

java oracle java-8 sqldatatypes
2个回答
0
投票

我应该选择什么数据类型 - Oracle 中的日期还是时间戳?

无论您想要哪个和/或最能代表您的数据。

在甲骨文中:

  • A
    DATE
    是一种二进制数据类型,由 7 个字节组成,分别代表:世纪、世纪年份、月、日、小时、分钟和秒。它总是拥有所有这些组件。
  • A
    TIMESTAMP
    是一种二进制数据类型,由 7-13 个字节组成,表示:世纪、世纪年份、月、日、小时、分钟、秒和小数秒的 0-6 个字节,具体取决于秒的精度时间戳。
  • A
    TIMESTAMP WITH TIME ZONE
    是一种二进制数据类型,由 14-20 个字节组成,表示:世纪、世纪年份、月、日、小时、分钟、秒,7 个字节表示时区信息,0-6 个字节表示时区信息。小数秒取决于时间戳的精度。

注意:这些数据类型都不以任何特定的人类可读格式存储数据。

DATE
TIMESTAMP
TIMESTAMP WITH TIME ZONE
数据类型的显示格式由从数据库读取的客户端应用程序控制。

  • 如果您想要年到整数秒的精度,请使用
    DATE
    TIMESTAMP(0)
    数据类型(您使用的是个人偏好 - 尽管如果您减去
    DATE
    ,则行为会略有不同)表示天数差异或天数分数的
    NUMBER
    数据类型,如果减去
    TIMESTAMP
    ,您将得到
    INTERVAL DAY TO SECOND
    数据类型)。
  • 如果您想要年到小数秒的精度,请使用
    TIMESTAMP(N)
    数据类型(其中
    N
    是小数秒所需的位数精度)。
  • 如果您想包含时区,请使用
    TIMESTAMP(N) WITH TIME ZONE
    数据类型(其中
    N
    是小数秒所需的位数精度)。

0
投票

仅使用java.time

存在严重缺陷的遗留日期时间类几年前就被 JSR 310 中定义的现代 java.time 类所取代。

为了通过 JDBC 涉及数据库,

java.sql.Timestamp
类被
OffsetDateTime
取代。

© www.soinside.com 2019 - 2024. All rights reserved.