【发布时间】:2016-09-26 10:57:58
【问题描述】:
我有下表
CREATE TABLE mydate(id serial primary key, date timestamp);
数据库配置为 UTC 时区:
SHOW TIMEZONE;
TimeZone
----------
UTC
(1 row)
我在表格中插入了一个测试日期,当我从表格中选择它时,我看到了以下结果(看起来是正确的):
db=# SELECT date FROM mydate;
date
---------------------
2015-11-01 00:00:00
现在,当我在 Clojure 中运行相同的查询时,我得到以下结果:
(q "SELECT date FROM mydate")
=> [[#inst "2015-10-31T22:00:00.000000000-00:00"]]
结果是一个 java.sql.Timestamp 对象,看起来比它晚了 2 小时。如果我将对象转换为 JodaTime 并询问当前小时,我得到 22(我应该得到 0)。
但是,如果我使用 toString() 方法转换 java.sql.Timestamp 对象字符串,我会得到以下结果:
“2015-11-01 00:00:00.0”
为什么 java.sql.Timestamp 对象晚了 2 小时,为什么在将其转换为字符串时看起来是正确的?
【问题讨论】:
-
我认为通常推荐使用
timestamptz代替timestamp。你有没有研究过这个选项?
标签: postgresql clojure