-1

我有这个在 SQL Server 2012 中运行良好的连接函数:

declare @reportN nvarchar(255)
set @reportName = concat(year(getdate()), '-',33);

select @reportN

这给出了结果 2013-33

我也有不支持concat功能的 SQL Server 2008,所以当我尝试按照以下方式进行操作时。

declare @r nvarchar(255)
set @r = (year(getdate()) + '-' + 33);
select @r

我得到了 2046 的结果,基本上它添加了它。你能告诉我如何解决它,以便我得到 2013-33 的结果。谢谢

4

3 回答 3

3

您可以将年份转换为字符串:

  declare @r nvarchar(255)
  set @r= CAST(YEAR(GETDATE()) AS CHAR(4)) +'-33';
  select @r

2012 中的CONCAT()函数将所有输入转换为字符串,如果要连接字符串,则需要在 2012 之前显式执行此操作。

于 2013-10-22T18:05:45.170 回答
1

您需要制作year(getDate())一个 CHAR (或其他一些文本)。您将它连接到一个整数 33。由于 year() 返回一个 INT,并且您连接到一个 INT (33),它返回和 INT。

declare @r nvarchar(255)
set @r=(CONVERT(CHAR(4), year(getdate()))+'-'+'33');
select @r
于 2013-10-22T18:08:31.160 回答
0

将 33 转换为 varchar:

declare @r nvarchar(255)
      set @r=(convert(varchar(4),year(getdate()))+'-'+'33');
      select @r
于 2013-10-22T18:06:09.390 回答