2016-09-26 18 views
1

私は日付時間が間違っている

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 
(q "SELECT date FROM mydate") 
=> [[#inst "2015-10-31T22:00:00.000000000-00:00"]] 

結果は、2時間の後ろになりそうだjava.sql.Timestampオブジェクトである:私はClojureの中で同じクエリを実行するとは、今、私は次のような結果を得ます。私がオブジェクトをJodaTimeに変換して現在の時間を尋ねると、私は22を得ます(私は0を得ているはずです)。

"2015年11月1日00:00:00.0"

なぜ私は、toString()メソッドを使用してjava.sql.Timestampオブジェクトの文字列を変換する場合

しかし、私は次のような結果を得ます2時間遅れたjava.sql.Timestampオブジェクトで、文字列に変換するタイミングが正しいと思われる理由は何ですか?

+1

私は、 'timestamp'が' timestamp'の代わりに通常は推奨されると信じています。このオプションを調べましたか? –

答えて

3

私は通常、UTC時刻で、正しいタイムゾーンで時刻を表示するためにビューレイヤーでのみアプリを実行することをおすすめします。 user.timezoneUTCjava -Duser.timezone=UTC ...project.clj:jvm-opts ["-Duser.timezone=UTC"]など)に設定してみてください。

関連する問題