SQL Server 2008和2012中的连接
我有一个在SQL Server 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()) + '
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
,所以你们不能将一个字符串连接到它。