2016-10-28 46 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 
相关问题