我在ReminderDetail
模型中有datetime列数据类型,我想要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 :(得分:0)
这是因为您将值转换为date
值,这会删除时间部分。您可以改为使用Postgres'INTERVAL
方法:
ReminderDetail.update_all("reminder_date = reminder_date - INTERVAL '1 day'")
答案 1 :(得分: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_add 和 date_sub ,您可以修改年,月,日,小时,分钟,秒等。