Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server 2008和2012中的连接_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

SQL Server 2008和2012中的连接

SQL Server 2008和2012中的连接,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个在SQL Server 2012中运行良好的连接函数: declare @reportN nvarchar(255) set @reportName = concat(year(getdate()), '-',33); select @reportN 由此得出2013-33年度的结果 我还有SQLServer2008,它不支持concat函数,所以当我尝试按照下面的方法来做时 declare @r nvarchar(255) set @r = (year(getdate()) + '

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

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

select @reportN
由此得出2013-33年度的结果

我还有SQLServer2008,它不支持concat函数,所以当我尝试按照下面的方法来做时

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

我得到了2046的结果,基本上是它加起来的。你能让我知道如何修复它,这样我就可以得到2013-33年的结果。谢谢

你可以把这一年当作一个字符串:

  declare @r nvarchar(255)
  set @r= CAST(YEAR(GETDATE()) AS CHAR(4)) +'-33';
  select @r
2012中的
CONCAT()
函数将所有输入转换为字符串,如果要连接字符串,需要在2012年之前明确执行此操作。

将33转换为varchar:

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

您需要将
年份(getDate())
设置为字符(或其他文本)。您正在将其连接到一个整数33。因为year()返回一个INT,而您正在连接到一个INT(33),所以它返回和INT

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

将年份转换为字符串
cast(year(getdate())为varchar(4))+'-33'
谢谢大家,它工作得很好。你们真是太棒了。year返回一个
int
,所以你们不能将一个字符串连接到它。