2016-12-22 1 views
1

Здравствуйте, я использую хранимую процедуру для получения данных из разных таблиц здесь, это моя хранимая процедура.как установить значение по умолчанию для столбца при наличии нулевого значения в хранимой процедуре

SELECT 
    ev.Id, 
    ev.Title, 
    ev.PageUrl, 
    ev.FromDate, 
    ev.ToDate, 
    ev.Isactive, 
    CONVERT(char(10), eventtime, 108) as EventTime, 
    ev.UserType, 
    ev.Street, 
    ev.Image, 
    ev.Description, 
    ev.City, 
    ev.CountryCode, 
    ev.CategoryId, 
    ev.UserId, 
    ev.StateCode, 
    cm.Name as 'CountryName', 
    sm.name as 'StateName', 
    asp.FirstName as 'FirstName', 
    Cat.Name as 'CategoryName', 
    ev.ZipCode 
from events ev 
inner join countrymaster cm on ev.CountryCode=cm.Id 
inner join statemaster sm on ev.StateCode=sm.Id 
inner join category cat on ev.Categoryid=cat.Id 
left join aspnetusers asp on ev.userid=asp.Id 
order by createddate desc 

в седьмой колонке

CONVERT(char(10), eventtime, 108) as EventTime, 

Я получаю время события, бросая его персонаж но когда мое время события равна нулю, то он выдает ошибку, как этот

Invalid отлитого из «System.String» - «System.TimeSpan».

Тип данных события время - время.

Так как я могу установить значение по умолчанию для столбца eventtime, если в нем нет значения.

ответ

1

Используйте ISNULL(), чтобы проверить, если eventime является NULL или not.If его нуль, то вы можете заменить пустую строку «» или какой-либо другой даты по вашему выбору ,

CONVERT(char(10), ISNULL(eventtime,''), 108) as EventTime // If you want to replace with empty string 

CONVERT(char(10), ISNULL(eventtime,GETDATE()), 108) as EventTime // If you want to replace with current date 

DECLARE @default datetime='2016-12-22 16:43:22.560' 
CONVERT(char(10), ISNULL(eventtime,@default), 108) as EventTime // If you want to relace it with some variable. 
0

Использование COALESCE на этой колонке:

CONVERT(char(10), COALESCE(eventtime, GETDATE()), 108) AS EventTime 

Это будет использовать текущую дату/время в качестве значения по умолчанию, но вы можете использовать любой по умолчанию вы хотите с этим подходом.

0

Используйте CASE выражение как

CASE WHEN eventtime IS NULL THEN GETDATE() 
ELSE CONVERT(char(10), eventtime, 108) END AS EventTime, 
0
CONVERT(char(10), isnull(eventtime,getdate()), 108) as EventTime 
1

используйте

CONVERT (CHAR (10), IsNull (eventtime, GETDATE()), 108), как EventTime

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