2017-06-02 33 views
1

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

+0

所以你说你想TIMESTAMP和DATE列有在插入结束相同的值。那是当前的日期和时间? –

+0

号我手动地插入从Java的日期和将其从SQL插入默认的时间不相同。 –

+0

请提供您的当前日期的你得到/设置和您想要的日期,在问题本身。 –

回答

0

如果你想在这两个提到的列插入CURRENT_DATE,你不能这样做:

检查你的系统(如Java代码运行)时区和数据库的时区相同。

在数据库运行此查询:

SELECT dbtimezone FROM DUAL;

,如果你发现它从你的Java /系统不同,那么你可以使用常换常:

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

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

编辑1: 如果你不想改变你可以做两件事情的时区:

1)选择在Java中的日期/时间形式的数据库,而不是从日历对象服用。然后将相同的日期/时间插入TIMESTAMP列。 display timestamp value in java from database

2)从java代替数据库本身设置数据库DATE字段。所以显然设置从Java领域。 http://alvinalexander.com/java/java-timestamp-example-current-time-now

+0

我不应该改变系统或分贝时间,因为我可以在其他一些环境中部署相同的项目。但数据库日期应该与环境日期匹配。那可能吗? –

+0

是的,这是一个解决方案。但考虑到性能,我们没有其他选择吗? –