这似乎是一个常见的问题,所以也许我错过了一些明显的东西。使用Joda Time,我想保留带有时区的日期。如果我没有使用JPA,我想做这样的事情来保存和检索时间戳:
create table test_dates
(
zone varchar(50),
ts_with_time_zone timestamp with time zone
);
insert into test_dates values ('UTC', '2012-08-12 12:34:56 UTC');
insert into test_dates values ('MST', '2012-08-12 05:34:56 MST');
select 'UTC in MST', ts_with_time_zone at time zone 'MST'
from test_dates where zone = 'UTC';
那么,如何使用Joda Time、JPA、Eclipse Link和Postgres保存和检索具有指定时区的这些时间戳?
我已经看到了使用转换器的答案,但我不确定您将如何指定或使用时区。当然,我可以得到UTC时间并自己转换,但这违背了“带时区”列的目的。这可能吗?
理想的解决方案是Eclipse Link处理类似于Hibernate的JodaTime。
您不保存时区。您只需使用输入字符串中指定的时区保存时间戳。时区将不会被保存。
select '2012-08-12 12:34:56 UTC'::timestamp with time zone;
timestamptz
------------------------
2012-08-12 09:34:56-03
select '2012-08-12 05:34:56 MST'::timestamp with time zone;
timestamptz
------------------------
2012-08-12 09:34:56-03
时区将是数据库时区。
select now()::timestamp with time zone;
now
-------------------------------
2012-12-10 12:26:16.318484-02
您可以自定义PostgreSQLPlatform以添加对通过JDBC存储时区的支持。您的JDBC驱动程序必须支持时区(很可能通过自定义类型或日历API)。
Eclipse Link确实支持Oracle上的时区,因此如果数据库和JDBC驱动程序支持它,也应该可以为时区扩展PostgreSQLPlatform。
我不太理解时间戳的用法, 例如 用户创建文章,他们可以选择,系统也会自动存储。 a.我是否应该使和具有时区并设置UTC的时间戳? b.用户post字符串,然后将其转换为utc时间戳,如下所示使用并存储,当某人选择这一行时,将其显示为用户客户端时间反向使用 c.我使用到,是不是意味着服务器时间?我做得对吗? 我的想法是,我总是在数据库中插入utc时区时间戳,无论用户/客户端读取的地方,都将数据转换为
问题内容: 如何配置JPA /hibernate模式以UTC(GMT)时区在数据库中存储日期/时间?考虑以下带注释的JPA实体: 如果日期为太平洋标准时间(PST)2008-Feb-03 9:30 am,那么我希望数据库中存储2008-Feb-03 5:30 pm的UTC时间。同样,从数据库中检索日期时,我希望将其解释为UTC。因此,在这种情况下530pm是UTC 530pm。显示时,它将被格式化
问题内容: 如何配置JPA /hibernate模式以UTC(GMT)时区在数据库中存储日期/时间?考虑以下带注释的JPA实体: 如果日期是太平洋标准时间(PST)2018-Feb-03 9:30 am,那么我希望数据库中存储2008-Feb-03 5:30 pm的UTC时间。同样,从数据库中检索日期时,我希望将其解释为UTC。因此,在这种情况下,530pm是UTC 530pm。显示时,它将被格式
问题内容: 在SQL Server中,我想创建一个表来节省事件的时间,并希望将其转换为用户选择的时区以进行显示。让我们说,如果在格林尼治标准时间1:00 PM在伦敦发生事件,那就是美国东部标准时间上午8:00。 给定这个例子,我想创建一个框架, 用户可以保存事件和时间的位置(提供事件的时区) 阅读这些事件,并在他喜欢的时区(美国东部时间)中显示时间 如何在SQL Server中完成此操作。 问题答
问题内容: 我正在使用JodaTime在Java应用程序中处理时区。尝试从Java时区的ID构建DateTimeZone(JodaTime)对象时遇到问题。乔达抛出 对于以下时区列表: SystemV / HST10 SystemV / YST9 SystemV / YST9YDT SystemV / PST8 SystemV / PST8PDT SystemV / MST7 SystemV /
环境 Spring Boot Starter Data JPA 1.4.2 Eclipselink 2.5.0 PostgreSQL 9.4.1211.jre7 我查看了数据库,时间戳包含我的本地时区日期时间,但我想用UTC存储它。这是因为我的默认时区设置为'Europe/Brussely',JPA/JDBC在将我的对象放入数据库之前将其转换为我的时区。 发现了不理想的解决方案 > 具有我想要实现