在 SQL 服务器中串联用补零分隔数字

Concatenation Breaks Numbers with Padded Zeros in SQL Server

我有一些无法工作的代码来连接两个字符串,其中一个是年份值,另一个是月份值,我将这两个字符串都从整数转换为字符串。月份还需要用前导零填充(一月是 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),希望添加时能正常工作一起。还有其他想法吗?

我认为这符合您的要求:

convert(varchar(6), a.[Fiscal Year] * 100 + a.[Fiscal Month])