Postgresql:如何在表的所有行中设置日期?

时间:2015-07-06 13:37:59

标签: sql postgresql

我有一个表A,其中包含字段duedate

我想将duedate小于今天的所有行设置为今天+ 3个月。 例如:

id duedate
1   2015-08-15
2   2014-07-15
3   2015-03-01
4
5   2015-03-02

将(今天是:2015-07-06):

id duedate
1   2015-08-15
2   2015-10-06
3   2015-10-06
4   2015-10-06
5   2015-10-06

1 个答案:

答案 0 :(得分:2)

要获得“今天加上三个月”,只需将这三个月添加到dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.01 * NSEC_PER_SEC), dispatch_get_main_queue(), ^(void){ if ([_timer isValid]) [_timer invalidate]; _timer = nil; [self timer]; });

current_date

“日期+间隔”的结果是时间戳而不是日期,因此需要将其转换回日期。

要处理update A set duedate = (current_date + interval '3' month)::date where duedate < current_date or duedate is null; 值,只需在null子句中包含其他条件即可。对于wherewhere duedate < current_date的行,比较duedate将失败,但由于附加条件,它们将被包含在内。