2016-10-28 57 views
0

我在找工作了,我已經聲明爲變量2個日期之間的差值,SQL:DATEDIFF如果開始日期比在另一個領域日期更大

DECLARE @start_date DATETIME 
SET @start_date= '20000728' 

DECLARE @end_date DATETIME 
SET @end_date= '20161028' 

但是,只有當@start_date較大比DATE_CREATED。如果不是我想要做DATE_CREATED和@end_date之間的區別

我該如何去做這件事?

所有我目前所面對的是:

DATEDIFF(DAY, @start_date, @end_date) AS 'DAYS_AVAIL_RANGE' 

我不知道我該怎麼去結合的IF語句來做到這一點,

任何幫助表示讚賞,乾杯!

+0

你能顯示你的慾望輸出嗎? –

回答

0

你想case

select (case when @start_date > date_created 
      then datediff(DAY, @start_date, @end_date) 
      else datediff(DAY, date_created, @end_date) 
     end) as days_avail_range 
+0

完美的感謝這個作品! – Andy00001

0

試試這個

select datediff(DAY, (select max(v) from (VALUES (@start_date), (DATE_CREATED)) as value(v)) , @end_date) from yourtable 
1

試試這個。這一定會解決您的問題,因爲此處的日期/時間值將進行鑄造。

select 
    case when DATEDIFF(day,convert(date,DATE_CREATED),CONVERT(date,@start_date)) > 0 
     then datediff(DAY, convert(date,@start_date), convert(date,@end_date)) 
    else 
     datediff(DAY, convert(date,DATE_CREATED), convert(date,@end_date)) 
    end 
相關問題