2015-06-01 2 views
-1

Я пытаюсь установить столбец в таблице, чтобы сказать «нет набора даты», если столбец в БД имеет значение даты как NULL. Если столбец имеет значение даты, я хочу его отобразить. Это SQL все в SPROC, а затем эти значения передаются приложениюОшибка преобразования SQL при преобразовании даты и/или времени из символьной строки

DB Значения имеют тип DATETYPE, NULL

enter image description here

Вот что я пытался до сих пор

,CASE WHEN [TB_EVNTEXP].[StartDate] IS NULL THEN 'no date set' ELSE [TB_EVNTEXP].[StartDate] END AS [expiry] 

приводит к enter image description here

, COALESCE (CAST (NULL AS DATETIME), 'дата не установлена'), [TB_EVNTEXP]. [StartDate] A S [expirey]

Результаты ошибки при конверсии.

Это работает, но все нулевые значения пусты в моей таблице.

,[TB_EVNTEXP].StartDate]     AS [cardexpiry] 

потратил много времени, на это сейчас и может делать с полезным рукой :)

Приветствий Павла

+0

Когда его, как это работает, [TB_EVNTEXP] .StartDate] \t \t AS [cardexpiry], но когда его, как это он терпит неудачу, ISNULL ([TB_EVNTEXP]. [StartDate], 'дата не установлена') \t \t \t \t \t \t \t \t \t А.С. [cardexpiry] – Paul

ответ

1

Кажется, вы используете SQL Server, который не позволяет смешивать строку с форматом даты.

Попробуйте это:

SELECT CASE WHEN [TB_EVNTEXP].[StartDate] IS NULL THEN '' ELSE [TB_EVNTEXP].[StartDate] END AS [expiry] 
FROM 

Или вам нужно преобразовать дату в VARCHAR, чтобы смешать его с пустыми значениями:

SELECT CASE WHEN [TB_EVNTEXP].[StartDate] IS NULL THEN 'not set' ELSE CONVERT(VARCHAR, [TB_EVNTEXP].[StartDate]) END AS [expiry] 
FROM 
+0

БУМ !! Большое спасибо :) именно то, что мне нужно! конвертировать в varchar. спасибо Пол – Paul

0

Это где происходит ваша ошибка:

COALESCE(CAST(NULL AS DATETIME), 'no date set'), 

Это логично то же самое, и он работает.

COALESCE(NULL, 'no date set'), 

или еще лучше,

'no date set' 
Смежные вопросы

 Смежные вопросы