2014-09-30 76 views
0

我想在一個DateDiff中使用GetDate和case語句。如果第一個字段爲空,我想使用當前日期。這是我與工作代碼:在tsql中使用DateDiff和GetDate()

DateDiff(DAY, (Select Min(case when (demand_labor.arrive_dt is null) 
     then GETDATE() 
     else (demand_labor.arrive_dt) 
     end) 
     From demand Inner Join demand_labor On demand.demand_id = 
     demand_labor.demand_id 
     Where (order_line.order_id = demand.order_id)), 
     c_service_call_env.resolve_date) As A2R2, 

對於某種原因,雖然當它是空它不設置日期,場保持零。任何幫助將不勝感激。

回答

0
ISNULL (demand_labor.arrive_dt , GETDATE()) 

ISNULL

則DateDiff應該有3個組成部分
不知道你正在嘗試做有

DateDiff(DAY, ISNULL (demand_labor.arrive_dt , GETDATE()), open_dt) 
+0

我想用.arrive_dt和open_dt做一個dateDiff。儘管如此。如果.arrive_dt爲空,我想檢查當前日期和open_dt之間的dateDiff。也可能有更多的.arrive_dt,這就是爲什麼我選擇最低。 – 2014-09-30 13:57:32

+0

然後open_dt需要在那裏,一分鐘你需要一個分組。即使你不知道該怎麼做,那麼至少要描述你想要做的事情。 – Paparazzi 2014-09-30 14:01:12

-1

我試圖做一個DATEDIFF與.arrive_dt和open_dt。 雖然說如果.arrive_dt爲空,我想檢查當前日期和open_dt之間的 dateDiff。也有可能存在 不止一個.arrive_dt這就是爲什麼我選擇分鐘

case語句應該工作datediffs內

case when .arrive_dt is null then datediff(day, getdate(), Open_dt) 
else datediff(day, min(.arrive_dt), open_dt) end 
group by *as needed* 

開關順序根據需要

http://sqlfiddle.com/#!3/9b6c5/1/0

+0

您不能在case語句中混合聚集(最小)和非聚合。即使這會失敗datediff(天,min(.arrive_dt),open_dt) – Paparazzi 2014-09-30 20:52:33

+0

@Blam你甚至嘗試過嗎? – lookslikeanevo 2014-10-02 01:15:34

+0

試圖讓sqlfiddle幫助@Blam出 – lookslikeanevo 2014-10-02 01:23:01