2016-10-28 1 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