在SqlServer中我自己 已知有两种加减年月方式
第一种(推荐使用)
SELECT CONVERT(VARCHAR(7),DATEADD(MONTH,-1,'2014-12'+'-01'),21)
使用CONVERT函数和 DATEADD函数
用VARCHAR数据类型(7)来获取我只需要的位数
使用DATEADD函数时需要将指定年月拼接上一个日期,不然会出现如下错误
这时就需要为我们的年月拼接一个日期来让DATEADD函数识别我们给定的年月('2014-12'+'-01')
完整代码如下
加一月
SELECT CONVERT(VARCHAR(7),DATEADD(MONTH,1,'2014-12'+'-01'),21)
减一月
SELECT CONVERT(VARCHAR(7),DATEADD(MONTH,-1,'2014-12'+'-01'),21)
使用DATEADD函数时也不会出现如下的第二种情况,他会自动将2014-12的年月加一月时格式化到2015-01
第二种(不推荐使用)
SELECT CONVERT(
VARCHAR(7),
CASE
WHEN CAST(SUBSTRING('2022-12', 6, 2) AS INT) - 1 = 0 THEN
CAST(CAST(SUBSTRING('2022-12', 1, 4) AS INT) - 1 AS CHAR) + '-12'
ELSE
SUBSTRING('2022-12', 1, 4) + '-' + CAST(CAST(SUBSTRING('2022-12', 6, 2) AS INT) + 1 AS CHAR)
END,
21
);
使用这种的将年月加减会从在当月份为12月时添加一个月不将年份增加一年,除非写多个判断不然达不到想要的效果