【问题标题】:SQL: DATEDIFF If Start Date is greater than a date in another fieldSQL: DATEDIFF 如果开始日期大于另一个字段中的日期
【发布时间】:2016-10-28 10:01:05
【问题描述】:

我正在寻找我声明为变量的 2 个日期之间的差异,

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 语句来做到这一点,

感谢您的帮助,干杯!

【问题讨论】:

  • 你能展示你想要的输出吗?

标签: sql sql-server if-statement sql-server-2012 datediff


【解决方案1】:

你想要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

【讨论】:

    【解决方案2】:

    试试这个。这肯定会解决您的问题,因为此处为日期/时间值执行转换。

    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
    

    【讨论】:

      【解决方案3】:

      试试这个

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-01
        • 1970-01-01
        • 2017-02-08
        相关资源
        最近更新 更多