【问题标题】:Concatenation Breaks Numbers with Padded Zeros in SQL Server连接在 SQL Server 中使用填充零断开数字
【发布时间】:2020-12-16 22:17:29
【问题描述】:

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

【问题讨论】:

    标签: sql string-concatenation zero-padding


    【解决方案1】:

    我认为这是你想要的:

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

    【讨论】:

    • 天哪,谢谢你!!是的,它奏效了。我永远不会想到这一点。聪明:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    相关资源
    最近更新 更多