我的Oracle 11g RDBMS中有date
列,名为changed_utc
。
如何确保我的Squeryl架构中的changedUtc
字段存储为UTC而不是数据库的本地时区?
根据我的意愿,我无法将列类型更改为timestamp with timezone
。
我非常喜欢在EST中使用我的日志时间戳,所以我宁愿不将JVM默认时区更改为UTC。
答案 0 :(得分:0)
如果列类型不包含时区,则该值不会与数据库的时区一起存储,它将以无时区存储。当它被回读时,因为它没有时区,它很可能被解释为在服务器读取值的时区内。
如果您想要的是确保日期在写入之前始终转换为UTC,并且在读取时始终解释为UTC,最简单的事情(假设您使用的是Squeryl 0.9.6+)是覆盖扩展PrimitiveTypeMode的类中的Date TEF(类型化表达式工厂)。请参阅此处的示例:http://squeryl.org/0.9.6.html