2016-01-05 3 views
3

мне нужно найти разницу в двух date в годы но лет должны быть в десятичной системе например мне нужно найти разницу между 16-jun-2010 к 30-Sep-2014SQl разница в дате

и это должно быть 4.30 YRS

я попробуйте следующий способ выбрать DATEDIFF (YY, '16 -jun-2010' , '30-сентября-2014'), как YearsOfServices

это дает мне только

+0

Добро пожаловать в SO, пожалуйста, будьте более конкретными, задавая вопрос: что вы пробовали, чего вы ожидаете и т. Д. См. [Как спросить] (http://stackoverflow.com/help/how-to-ask) – Nehal

+4

Разница между этими двумя датами никогда не будет 4,5 года –

+0

правильно, пожалуйста, исправьте вопрос –

ответ

6

Встроенная функция datediff() делает вычисление числа границ периода, пересекающихся между датами.

datediff(yy,'16 jun 2014','30 Sep 2015') 

returns 1 

Вы получите более точный результат, если вычислить разницу между двумя датами в днях и разделить их на средней длины календарного года в течение дня промежуток 400 лет (365,2425):

datediff(day,{start-date},{end-date},)/365.2425 

Например,

select datediff(day,'1 Jan 2000' ,'18 April 2014')/365.2425 

return 14.29461248 - только вокруг него до требуемой точности.

0

пожалуйста попробуйте это

SELECT DATEDIFF(dd, '16-jun-2010','30-Sep-2014')/365.0 AS DiffDate 

Либо вы должны попробовать

SELECT DATEDIFF(mm, '16-jun-2010','30-sep-2014')/12.0 AS DiffDate 
+0

нет, он вам 4.293150 –

+0

, и это право bcz есть 4 года и только три месяца, если есть 4 года и 6 месяцев, что ответ будет вокруг 4.5 год –

+0

да, вы правы, но теперь он должен прийти как 4.30 –

0

вы можете попробовать это

Declare @a Date 
declare @b date 
set @a ='07-01-2013' 
set @b='08-02-2014' 




select (DATEDIFF(DAY,@a,@b))/convert(numeric,365) 
0

я получил мой ответ Round (DATEDIFF (DD, '16 -jun -2010 ',' 30-sep-2014 ')/365.0,1) как и Datediff Поможем

Смежные вопросы