ورود

View Full Version : کم کردن دو تاریخ که به صورت char میباشند؟



pbiuki630
یک شنبه 03 مهر 1390, 12:25 عصر
سلام
من دو تاریخ دارم که به صورت nvarchar هستند یعنی 1388/05/12 که میخوام 1385/07/20 رو ازش کم کنن نمیدونم آیا میتونم همچین کاری کنم یا نه؟

یوسف زالی
یک شنبه 03 مهر 1390, 20:45 عصر
سلام. اگر از سالهای کبیسه صرف نظر کنید میشه با استفاده از تابع ساده ای این کار رو انجام داد.

create function DiffDate(@X1 char(10), @X2 char(10))
returns int
as
begin
declare @d1 int
declare @d2 int
set @d1 =cast(LEFT(@x1, 2)as int)+
case SUBSTRING(@x1, 4, 2)
when '01' then 31
when '02' then 62
when '03' then 93
when '04' then 124
when '05' then 155
when '06' then 186
when '07' then 216
when '08' then 246
when '09' then 276
when '10' then 306
when '11' then 336
when '12' then 365
end+
cast(RIGHT(@x1, 4)as int)* 365
set @d2 =cast(LEFT(@x2, 2)as int)+
case SUBSTRING(@x2, 4, 2)
when '01' then 31
when '02' then 62
when '03' then 93
when '04' then 124
when '05' then 155
when '06' then 186
when '07' then 216
when '08' then 246
when '09' then 276
when '10' then 306
when '11' then 336
when '12' then 365
end+
cast(RIGHT(@x2, 4)as int)* 365
return @d1 - @d2
end


نحوه استفاده:


select dbo.diffdate('12/05/1388','20/07/1385')


خروجی بر حسب روز ..
موفق باشید.