![](/img/trans.png)
[英]Rails 3.2 frequent postgres prepared statement already exists errors
[英]1 hour difference with rails time in postgres prepared statement
我有一個問題,在rails中執行查詢會在生成的postgres sql語句中轉換錯誤的時間。 shell,ruby和postgres中的時間為23:32,但是在生成的sql語句中為22:32
任何想法怎么了? 我使用rails 3.2.11,pg gem 0.14.1(捆綁安裝安裝)
debian系統時間:
$ date
Sat Feb 9 23:32:10 CET 2013
在紅寶石中:
1.9.2p290 :004 > Time.now
=> 2013-02-09 23:32:15 +0100
在postgres中:
=> select current_time;
timetz
--------------------
23:32:24.213487+01
(1 row)
生成的rails查詢:
1.9.2p290 :003 > Item.where "next_crawling_at < ?", Time.now
Item Load (1.1ms) SELECT "items".* FROM "items" WHERE (next_crawling_at < '2013-02-09 22:32:17.935595')
看起來您已經在客戶端中設置了UTC時區-即使這似乎與Time.now
的結果相矛盾。 您會從Time.zone
得到什么?
由於夏季沒有額外的DST偏移量(因為我們現在有冬天),您的時區可能是CET(歐洲中部時間),而Time.now
似乎已轉換為UTC。
您可以使用Time.now.in_time_zone("Europe/Paris")
-(或任何適合您數據庫時區設置的時區名稱Time.now.in_time_zone("Europe/Paris")
在Ruby中強制使用特定時區。
或者,您可以使用Time.now.utc
強制使用UTC時間戳,並在Postgres中的AT TIME ZONE 'Europe/Berlin'
Time.now.utc
添加時間戳。
或者您使用帶有timestamp with time zone
操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.