2011-07-13 41 views
0

我有一个选择语句,其中包含一个数字,说明,日期。当我尝试将我的日期添加到语句并运行它时,我得到了字符串错误的日期转换,并且我不太确定如何去处理它。从字符串错误的日期转换

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语句并运行后发生错误 - 任何建议都会很棒。谢谢!

回答

1

SQL将日期值作为日期时间返回,并且这些值不能隐式用作字符串(varchars)。你将不得不明确地转换或施放它们。因此,在任一下列2种方式改变你的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有微弱的优势 - 你可以应用格式上的日期,如果你想要的。

+0

谢谢!我使用了转换,所以我可以应用我的格式。感谢您的大力帮助。 – Masriyah

+0

还有一个问题......我想转换,但是select语句不接受它:SELECT @cases = COALESCE(@ cases + @linebreak + C.CaseNumber,C.CaseNumber)+“ - ”+ CT。[Description] +“ - ”+ CONVERT(VARCHAR,@ assignment,100)AS A.DateOn – Masriyah

+0

嗯......仔细观察你的原始查询我认为你做错了。所有的变量都设置为NULL,但是在你选择的时候,你试图将它们连接到一个字符串,并且还在执行@cases = COALESCE(@cases ...),我认为这不会起作用。如果你告诉我更多你的查询输出应该是什么我可能能够帮助你。 – legendofawesomeness

相关问题