0

I have datetime column data type in ReminderDetail model, and I want to update_all values belonging to that column. I have written below query

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

but it updates like below:

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

I want to update only the date, not hours. I want to like that 2013-07-04 06:37:00 or can I add some seconds to existing data ? can any one suggest ?

4

2 回答 2

0

这是因为您将值转换为一个date值,从而剥离了时间部分。您可以改用 Postgres 的INTERVAL方法:

ReminderDetail.update_all("reminder_date = reminder_date - INTERVAL '1 day'")
于 2013-07-05T13:53:06.190 回答
0

date(remainder_date)将仅选择日期部分并将其减少 1。因此,此处的日期部分变为 2013-07-04,但由于时间部分已被剥离,因此它插入零。您可能可以使用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您可以修改年、月、日、小时、分钟、秒等。

于 2013-07-06T07:19:23.563 回答