将月份数增加1个SQL

时间:2016-08-01 16:28:38

标签: sql postgresql

我需要更新一个递增1的列值,列是month_number,它被定义为整数,当月份为12时,我需要更新为1而不是13

我首先尝试了这种方法:

update tab
set col_month = col_month + 1

但是对于col_month为12的情况不适用

3 个答案:

答案 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或所有情况发明轮子。