2013-07-05 46 views
0

我有ReminderDetail模型的日期時間列數據類型,我想要update_all值屬於該列。我已經寫了下面的查詢如何根據日期類型列的行值寫入更新全部?

ReminderDetail.update_all("reminder_date = date(reminder_date) - 1) 

,但它像下面更新:

Before 2013-07-05 06:37:00 
After 2013-07-04 00:00:00 

我只想更新日期,而不是幾小時。我想要那樣2013-07-04 06:37:00還是我可以添加一些秒數到現有的數據?任何人可以建議?

回答

0

這是因爲您正在將值轉換爲date值,這會剝離時間部分。您可以使用Postgres的INTERVAL方法代替:

ReminderDetail.update_all("reminder_date = reminder_date - INTERVAL '1 day'") 
0

日期(remainder_date)將只選擇的日期部分,您可以通過1酌減所以在這裏你日期部分變爲2013年7月4日,但由於時間部分已被剝離,它將插入零。 您可以使用date_sub sql方法。

變化

ReminderDetail.update_all("reminder_date = date(reminder_date) - 1") 

ReminderDetail.update_all("reminder_date = date_sub(reminder_date, INTERVAL 1 day)") 

使用DATE_ADDDATE_SUB可以修改年,月,日,時,分,秒等。