有下表(供应商没有区别 - 我个人尝试过Oracle和PgSQL):
CREATE TABLE times (
id INTEGER PRIMARY KEY,
time TIMESTAMP
);
和JPA实体:
@Entity
@Table(name = "times")
public class TimeEntity {
@Id
@Column
public Long id;
???
public ??? time;
}
有没有办法以某种方式完成实体,将日期时间值存储为UTC时间戳?例如。 java.util.Date.getTime()
方法返回的相同值。
我已经尝试Calendar
使用不同的时区,java.util.Date
和java.sql.Date
,Timestamp
,不同的时间类型,但没有任何成功。尝试使用WebSphere和Spring + Hibernate + Tomcat,使用Oracle和PostgreSQL(只是出于好奇)。
它的值总是最终转移到服务器的默认时区。
以下列方式在DB中检查的值:select (extract(epoch from time)) from times;
我发现将值存储为UTC的唯一方法是仅使用JDBC和PreparedStatement。但这并不是一个真正的选择,因为我们正在将基于EJB / JPA的大型应用程序集成到现有的基础架构中,现有的数据库和应用程序分布在三个不同的时区。这就是为什么我们需要所描述的UTC时间戳值。
这真的是一项不可能完成的任务,还是我错过了一些明显的东西?我有点希望后来。
编辑,示例:
到目前为止我尝试过的所有实现的存储值都是在这一刻: 1462017276(2016年4月30日星期六11:54:36),这是我们目前在悉尼的时间。
我需要它是 1461981275(星期六,2016年4月30日01:54:35),由Date.getTime()给出。
答案 0 :(得分:0)
Oracle中的TIMESTAMP不支持时区。
你应该考虑使用:
var btn = document.getElementById('butt_1');
btn.addEventListener('click', function(e) {
// your code
});
更多信息:
https://docs.oracle.com/cd/B19306_01/server.102/b14225/ch4datetime.htm#i1006081 https://docs.oracle.com/cd/B19306_01/server.102/b14225/ch4datetime.htm#i1006169
答案 1 :(得分:-1)
我认为使用这些注释解决了这个问题 @Column(name =“DATETIME_FIELD”) @Temporal(TemporalType.TIMESTAMP) private java.util.Calendar time;