如何确保将日期存储为UTC?

时间:2017-01-13 20:26:19

标签: squeryl

我的Oracle 11g RDBMS中有date列,名为changed_utc

如何确保我的Squeryl架构中的changedUtc字段存储为UTC而不是数据库的本地时区?

根据我的意愿,我无法将列类型更改为timestamp with timezone

我非常喜欢在EST中使用我的日志时间戳,所以我宁愿不将JVM默认时区更改为UTC。

1 个答案:

答案 0 :(得分:0)

如果列类型不包含时区,则该值不会与数据库的时区一起存储,它将以无时区存储。当它被回读时,因为它没有时区,它很可能被解释为在服务器读取值的时区内。

如果您想要的是确保日期在写入之前始终转换为UTC,并且在读取时始终解释为UTC,最简单的事情(假设您使用的是Squeryl 0.9.6+)是覆盖扩展PrimitiveTypeMode的类中的Date TEF(类型化表达式工厂)。请参阅此处的示例:http://squeryl.org/0.9.6.html