我需要更新一个递增1的列值,列是month_number,它被定义为整数,当月份为12时,我需要更新为1而不是13
我首先尝试了这种方法:
update tab
set col_month = col_month + 1
但是对于col_month为12的情况不适用
答案 0 :(得分:4)
我认为最简单的方法是使用模运算符%
。
UPDATE
tab
SET
col_month = (col_month % 12) + 1
Modulo运算符为您提供范围0 - 11(12更改为0),您只需要添加1.
答案 1 :(得分:3)
这是使用case
语句的一种方法:
update tab
set col_month = case when col_month = 12 then 1 else col_month + 1 end
答案 2 :(得分:0)
我认为您仍应使用日期日期。例如:
select extract( month from now() + '5 month'::interval)::int;
给你1而不是13,它是int
你想要的。并且你没有用case
或所有情况发明轮子。