如何基于GETDATE()函数获取上月YYYYMM格式的整数型值
SQL日期处理:变量赋值与UPDATE字段转换实现方案
我来帮你搞定对应的SQL代码实现,完全匹配你的需求细节:
1. 变量声明与当前日期获取
首先声明INT类型的变量@SETMONTH,并通过GETDATE()获取当前日期,转换为DATE类型后赋值给[Current_Date]:
DECLARE @SETMONTH INT -- 为[Current_Date]赋值 SELECT CONVERT(DATE, GETDATE()) AS [Current_Date]
2. 为@SETMONTH赋值(1/30/2019 → 201912)
针对当前日期1/30/2019,我们需要得到上一年12月的YYYYMM格式整数。这里提供两种兼容不同SQL Server版本的实现方式:
- 方法1(SQL Server 2012+适用):利用
DATEADD减去一个月,再通过FORMAT格式化后转成整数SET @SETMONTH = CAST(FORMAT(DATEADD(MONTH, -1, GETDATE()), 'yyyyMM') AS INT) - 方法2(全版本兼容):通过
YEAR和MONTH函数手动计算年份和月份,拼接成目标整数
两种方法对1/30/2019的场景,最终都会得到SET @SETMONTH = (YEAR(GETDATE()) - CASE WHEN MONTH(GETDATE()) = 1 THEN 1 ELSE 0 END) * 100 + 12201912这个结果。
3. UPDATE语句中转换日期并赋值(1/30/2020 → 201912)
要把日期1/30/2020转换为201912并赋值给Table1的Model_Month字段,同样可以沿用上面的逻辑,直接嵌入UPDATE语句:
- 方法1(SQL Server 2012+适用)
UPDATE Table1 SET Model_Month = CAST(FORMAT(DATEADD(MONTH, -1, '2020-01-30'), 'yyyyMM') AS INT) - 方法2(全版本兼容)
因为目标日期是1月,所以直接年份减1再加上12即可,最终都会给UPDATE Table1 SET Model_Month = (YEAR('2020-01-30') - 1) * 100 + 12Model_Month赋值为201912。
内容的提问来源于stack exchange,提问作者oryan5000
相关产品推荐
相关产品推荐

