当我想在SQL Server中使用CONCATENATE
时:
CONCAT(year(dateadd(year, -1, left(t1.[FQuater], 4))), right(t1.[FFQuater], 2))
我收到此错误:
列FQuater
的数据类型为Varchar
。
答案 0 :(得分:7)
只需使用旧版SQL Server上提供的+
,而不是concat
,只能从SQL Server 2012获得:
year(dateadd(year,-1,left(t1.[FQuater],4))) +''+ right(t1.[FFQuater],2)
避免空值(如果可能)
isnull(year(dateadd(year,-1,left(t1.[FQuater],4))),'') +''+ isnull(right(t1.[FFQuater],2),'')
编辑:正如@ ravish.hacker所提到的,你可以这样做:
isnull(year(dateadd(year,-1,left(t1.[FQuater],4))),'') +''+ isnull(right(t1.[FFQuater],2),'') + ' '
答案 1 :(得分:2)
希望您使用的是SQL Server 2012或更高版本。
康卡特本身并不算什么。您需要使用select或set。
例如。
Select CONCAT(year(dateadd(year,-1,left(t1.[FQuater],4))),right(t1.[FFQuater],2))
对于SQL Server 2008,这将起作用:
DECLARE @FQuater NVARCHAR(100) = '20110826'
SELECT CAST(YEAR(DATEADD(YEAR, - 1, LEFT(@FQuater, 4))) AS NVARCHAR) + CAST(RIGHT(@FQuater, 2) AS NVARCHAR)