1

我有一些非工作代码来连接两个字符串,其中一个是年份值,另一个是月份值,我将这两个字符串都从整数转换为字符串。该月份还需要用前导零填充(一月是 01,而不是 1)。

因此,这是一个年月字段,应阅读此内容以反映 2020 年 1 月:

202001

我可以使用以下方法将月份填充到 2 位数字:

LEFT('00'+CAST(a.[Fiscal Month] as varchar(2)),2)) as [YearPeriod]

这本身就有效。但是一旦我将它与年份连接起来,就像这样,

CAST(a.[Fiscal Year] as varchar(4)) + LEFT('00'+CAST(a.[Fiscal Month] as varchar(2)),2) as [Period]

然后我最终没有一个月。所有日期如下所示:

202000

我在这里做错了什么?我使用了各种语法(“concat”函数而不是 + 以及在填充后转换为字符串与先转换)。我还尝试只用 1 位零填充,以为我用零截断了月份数。

我一直在格式化日期字段并处理这个问题,但我无法继续我需要完成的项目。连接是否以某种方式取消了月份字段?

这将进入的字段是nvarchar(6),所以在我的代码中,我将年份部分格式化为 nvarchar(4) 并将月份格式化为 nvarchar(2),希望将它们加在一起。还有其他想法吗?

4

1 回答 1

0

我认为这可以满足您的要求:

convert(varchar(6), a.[Fiscal Year] * 100 + a.[Fiscal Month])
于 2020-08-28T00:58:10.117 回答