SQL: DATEDIFF 如果开始日期大于另一个字段中的日期
SQL: DATEDIFF If Start Date is greater than a date in another field
我想计算出我已声明为变量的 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 语句来执行此操作,
感谢任何帮助,干杯!
你想要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
试试这个
select datediff(DAY, (select max(v) from (VALUES (@start_date), (DATE_CREATED)) as value(v)) , @end_date) from yourtable
试试这个。这肯定会解决您的问题,因为这里为 date/time 值执行转换。
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
我想计算出我已声明为变量的 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 语句来执行此操作,
感谢任何帮助,干杯!
你想要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
试试这个
select datediff(DAY, (select max(v) from (VALUES (@start_date), (DATE_CREATED)) as value(v)) , @end_date) from yourtable
试试这个。这肯定会解决您的问题,因为这里为 date/time 值执行转换。
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