【问题标题】:Store Date and Time in Oracle Date Column在 Oracle 日期列中存储日期和时间
【发布时间】:2017-11-01 10:13:08
【问题描述】:

我正在使用 JPA 和 JEE 将 DB2 表迁移到 Oracle 数据库。因此,我遇到了“日期”和“时间”类型列的问题。更具体地说,在 Oracle 中没有数据类型“时间”,所以我试图从 DB2 存储 Oracle 的“日期”类型的列中的 2 列(一个是日期类型,另一个是时间类型)的串联数据库。这样,我将向您展示我是如何定义 Oracle 数据库中的列以及我定义的映射:

, DATA_HORA_CREACIO DATE DEFAULT
TO_DATE('0001-01-01-00.00.00','YYYY-MM-DD-HH24.MI.SS')
NOT NULL

private Date dataHoraCreacio;

@Temporal(TemporalType.TIMESTAMP)
@Column(name = "DATA_HORA_CREACIO", nullable = false)
public Date getDataHoraCreacio() {
    return this.dataHoraCreacio;
}

public void setDataHoraCreacio(Date dataHoraCreacio) {
    this.dataHoraCreacio = dataHoraCreacio;
}

SimpleDateFormat sdfDateHour = new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss");
String data = sdfDate.format(comandaAvariaDb2.getId().getDataCreacio());
String hora = sdfHour.format(comandaAvariaDb2.getId().getHoraCreacio());
comandaAvariaOraId.setDataHoraCreacio(sdfDateHour.parse(data + "-" +    hora));

即便如此,虽然覆盖信息的工作变量被正确告知,但引用时间的部分被存储而不是插入到数据库中:

Variable working data: Thu Feb 02 18:42:53 CET 2006
DataBase inserted Value: 2006-02-02

我已经尝试了几个小时但没有成功。即便如此,如果我设法使用“时间戳”类型的列,但我认为不是最佳解决方案,因为毫秒占用了不必要的空间。

有什么想法吗?

提前致谢。

【问题讨论】:

标签: java oracle jpa jakarta-ee


【解决方案1】:

如果您对 DATA_HORA_CREACIO 使用 Oracle DATE 值,您应该能够直接从 DB2 插入时间戳。只是选择一个没有任何输出提示的 DATE 列只会给你显示的日期部分:

CREATE TABLE STACK2 
      (DATA_HORA_CREACIO DATE
    DEFAULT TO_DATE('0001-01-01-00.00.00',
        'YYYY-MM-DD-HH24.MI.SS') NOT NULL);

INSERT INTO STACK2 VALUES 
     (TO_DATE('2017-05-30-16.47.32','YYYY-MM-DD-HH24.MI.SS'));

SELECT DATA_HORA_CREACIO, 
       TO_CHAR(DATA_HORA_CREACIO, 'YYYY-MM-DD'), 
       TO_CHAR(DATA_HORA_CREACIO, 'HH24:MI:SS') FROM STACK2;

结果是:

查看Oracle DATE definition的摘录:

日期数据类型

DATE 数据类型存储日期和时间信息。 虽然日期和时间信息可以用两种方式表示 字符和数字数据类型,DATE 数据类型有特殊的 相关属性。对于每个 DATE 值,Oracle 存储 以下信息:世纪、年、月、日、时、分和 第二个。

【讨论】:

  • 您好 Jan。好吧,在检查了您的指示后,我不得不说您是绝对正确的。实际上,它正在存储日期和时间。因此,怀疑结果。另外,请注意在 SQLDEVELOPER 中您可以更改掩码,以便“DATE”类型的列显示为日期时间:YYYY-MM-DD-HH24.MI.SS 此链接说明如何:stackoverflow.com/questions/12628385/… 最后,谢谢解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 2012-06-18
  • 2014-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-04
  • 2013-08-02
  • 1970-01-01
相关资源
最近更新 更多