【问题标题】:update date/time in oracle database from java从java更新oracle数据库中的日期/时间
【发布时间】:2017-06-02 09:51:00
【问题描述】:

我的表中有 2 列数据类型为 TIMESTAMP 和 DATE。数据类型为“DATE”的列是默认日期/时间,所以我们不需要从 JAVA 插入,它会自动插入。对于数据类型为“TIMESTAMP”的另一列,我从 JAVA 手动插入当前时间,这是可选的。实际问题是数据库时间与我从 java 插入的时间不同。即。插入的默认时间与我从数据库手动插入的日期/时间不同。有什么方法可以将数据库时间与从 java 插入的系统时间相匹配? SQL 日期与我的系统日期相差 7-8 分钟,手动插入时应该匹配。

【问题讨论】:

  • 所以您说您希望 TIMESTAMP 和 DATE 列在插入结束时具有相同的值。那是当前日期和时间?
  • 没有。我从java手动插入的日期和从SQL默认插入的日期不一样。
  • 请在问题本身中提供您正在获取/设置的当前日期以及您想要的日期。
  • 如果数据库数据/时间是下午 1:00 而我的系统日期/时间是下午 1:07。
  • 您的数据库在本地系统上吗?您的系统和数据库的时区是否相同?

标签: java database systemtime


【解决方案1】:

如果您想在提到的两个列中插入 current_date 而您无法这样做:

检查您的系统(运行 java 代码的地方)的时区和数据库的时区是否相同。

在数据库中运行这个查询:

SELECT dbtimezone FROM DUAL;

如果你发现它与你的 java/system 不同,那么你可以随时使用:

ALTER DATABASE SET TIME_ZONE='+05:30'; 

https://docs.oracle.com/cd/E11882_01/server.112/e10729/ch4datetime.htm#NLSPG263

编辑 1: 如果您不想更改时区,您可以做两件事:

1) 在 java 中选择日期/时间表单数据库,而不是从 Calendar 对象中获取它。然后将相同的日期/时间插入 TIMESTAMP 列。 display timestamp value in java from database

2) 从 java 而不是数据库本身设置数据库 DATE 字段。所以显然从java设置这两个字段。 http://alvinalexander.com/java/java-timestamp-example-current-time-now

【讨论】:

  • 我不应该更改系统或数据库时间,因为我可以在其他环境中部署相同的项目。但是数据库日期应该与环境日期匹配。这可能吗?
  • 是的,这是一种解决方案。但是考虑到性能,我们没有其他选择吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 2012-02-12
  • 1970-01-01
  • 2015-06-14
相关资源
最近更新 更多