2013-07-11 7 views
1

У меня есть столбец даты в моей таблице базы данных.sq case case with date values ​​

SELECT sDestructionDate FROM tblDocumentHeader 

ниже является результатом вышеупомянутого запроса

enter image description here

мне нужно распечатать пустой для значения даты «1991-01-01»

Я ожидаю результата установить что-то вроде ниже.

enter image description here

Я попытался ниже запрос, но он все еще печати, что «1991-01-01» дату.

SELECT CASE CONVERT(date,h.sDestructionDate,103) 
WHEN '01/01/1991' 
THEN '' 
ELSE CONVERT(date,h.sDestructionDate,103) END 
AS 'sDestructionDate' 
FROM tblDocumentHeader h 

Я не хочу преобразовывать результат в значение varchar. ниже запрос дает мне результат, но мне нужно вернуть его из формата даты.

SELECT CASE CONVERT(varchar,h.sDestructionDate,103) 
WHEN '01/01/1991' 
THEN '' 
ELSE convert(varchar,h.sDestructionDate,103) END 
AS 'sDestructionDate' 
FROM tblDocumentHeader h 
+0

Будет ли «нуль» делать? – Bohemian

+0

@Bohemian Мне нужно попробовать, но все же мне нужно использовать утверждение case правильно? – chamara

+0

Является ли 'sDestructionDate' реальным столбцом даты или varchar? – Blorgbeard

ответ

5

Я бы сначала преобразовать его в нуль:

select 
    case 
     when h.sDestructionDate = '01/01/1991' then null 
     else h.sDestructionDate 
    end as sDestructionDate 
from tblDocumentHeader h 

Затем смотрите на свой инструмент отчетности для настоящего пустой, если значение null


Смешение данных с Презентация - ошибка. Этот подход прост и сохраняет две проблемы: данные и рендеринг отдельный.

+0

thanks.it работал! – chamara

+0

Если sDestructionDate было полем даты, запрос будет выглядеть следующим образом: 'WHEN CAST ('1991-01-01' AS DATE) THEN null ' – AWippler