我正在尝试在SQL查询中挖掘更多信息,我正在使用它。
Yearmo Back_1_month
------- ------------
201202 201201 Where 201202 is Feb 2012 , 201201 is Jan 2012
201201 201112
201204 201203
201212 201211
我很困惑,怎么能为201201做好准备。
答案 0 :(得分:2)
假设yearmo
是int
:
DECLARE @Yearmo INT
SET @Yearmo = 201201
-- First, convert yearmo to a varchar.
-- Next, add a "day" portion to the varchar.
-- Then, convert to a date.
-- Then, subtract a month.
-- Finally, convert back to your original format using char(6).
SELECT CONVERT(
CHAR(6),
(DATEADD(MONTH, -1, CAST(CAST(@YearMo AS VARCHAR) + '01' AS DATETIME))),
112
)
答案 1 :(得分:1)
答案 2 :(得分:1)
这适用于一个单独的SQL查询:
SELECT CONVERT(VARCHAR(6), DATEADD(month, -1 , convert(datetime, CAST ( 201201 AS VARCHAR(8)) + '01', 112) ) , 112)
答案 3 :(得分:1)
试试这个:
SELECT yearmo,
LEFT(CONVERT(CHAR(8), DATEADD(month, -1, CONVERT(datetime, yearmo + '01')), 112), 6)
FROM <YOUR_TABLE>
答案 4 :(得分:0)
您可以使用参数创建一个存储过程作为yearmo,然后将substring(yr)和substring(mo)保存在两个变量中,然后看看,如果substring(mo)为01,则在转换后减少子串(yr)并更改子串(mo)到12,然后追加子串并返回。