我有一个包含数字,描述和日期的select语句。当我尝试将我的日期添加到语句并运行它我得到一个字符串错误的日期转换,我不知道如何去做。
DECLARE @parties AS TABLE (
PartyId UNIQUEIDENTIFIER
, Cases NVARCHAR(MAX)
, CaseTypes VARCHAR(MAX)
, Assignment DateTime)
DECLARE @cases NVARCHAR(MAX)
DECLARE @casetypes VARCHAR(MAX)
DECLARE @assignment DateTime
DECLARE @linebreak AS VARCHAR(2)
SET @cases = NULL
SET @casetypes = NULL
SET @assignment = NULL
SET @linebreak = CHAR(13) + CHAR(10)
SELECT @cases = COALESCE(@cases+ @linebreak + C.CaseNumber, C.CaseNumber)+"-"+CT.[Description]+"-"+A.DateOn
FROM [Case] C
INNER JOIN CaseType CT ON C.CaseTypeId = CT.CaseTypeId
INNER JOIN @partyCases PC ON C.CaseId = PC.CaseId
INNER JOIN Appointment A ON C.CaseId = A.CaseId
WHERE PC.PartyId = @partyId
将A.DateOn添加到我的select语句并运行它后发生错误 - 任何建议都会很棒。谢谢!
答案 0 :(得分:1)
SQL将Date值作为datetime返回,这些值不能隐式用作字符串(varchars)。您必须明确转换或转换它们。因此,请使用以下两种方法之一更改您的select语句:
SELECT @cases = COALESCE(@cases+ @linebreak + C.CaseNumber, C.CaseNumber)+"-"+CT.[Description]+"-"+CONVERT(varchar, A.DateOn)
OR
SELECT @cases = COALESCE(@cases+ @linebreak + C.CaseNumber, C.CaseNumber)+"-"+CT.[Description]+"-"+CAST(A.DateOn as varchar)
CONVERT略有优势 - 如果需要,您可以在日期应用格式。