2016-12-22 9 views
1

こんにちは私はストアドプロシージャを使用しています。ストアドプロシージャにnull値があるときにカラムのデフォルト値を設定する方法

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 
7列目で

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

私はそれを文字 をキャストしてイベント時間を取得していますが、私のイベント時間がnullであるとき、それはからこの

無効なキャストのようなエラーがスローされます'System.String'を 'System.TimeSpan'に設定します。

イベント時刻のデータ型は時間です。

したがって、値が存在しない場合、eventtime列のデフォルト値を設定するにはどうすればよいですか。その列に

答えて

1

ようCASE表現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

使用使用ISNULL()

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(イベント時刻、GETDATE())、108)を使用してください

関連する問題