Преобразование даты из строки символов - PullRequest
0 голосов
/ 13 июля 2011

У меня есть оператор выбора, который содержит номер, описание, дату. Когда я пытаюсь добавить свою дату в оператор и запустить ее, я получаю преобразование даты из ошибки символьной строки, и я не совсем уверен, как это сделать.

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 к моему оператору выбора и его запуска - любые предложения будут отличными. Спасибо!

1 Ответ

1 голос
/ 13 июля 2011

SQL возвращает значения Date как datetime, и такие значения не могут быть неявно использованы в качестве строк (varchars).Вам придется явно конвертировать или разыгрывать их.Итак, измените ваш оператор выбора одним из двух способов ниже:

SELECT @cases = COALESCE(@cases+ @linebreak + C.CaseNumber, C.CaseNumber)+"-"+CT.[Description]+"-"+CONVERT(varchar, A.DateOn)

ИЛИ

SELECT @cases = COALESCE(@cases+ @linebreak + C.CaseNumber, C.CaseNumber)+"-"+CT.[Description]+"-"+CAST(A.DateOn as varchar)

У CONVERT есть небольшое преимущество - вы можете применить форматирование к дате, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...