2012-05-02 1 views
3

У меня есть две даты, в которых я хотел бы найти количество лет между ними, однако мне нужно будет показать значение до двух знаков после запятой. Я попытался следующие, но я всегда получаю возвращенное значение 0, как и все мои даты не охватывают целый год:DateDiff years to decimals

DATEDIFF(yy, @EndDateTime, i.mat_exp_dte) 

Я тогда пытался найти количество дней между ними, а затем разделив его на 365, но это все еще возвращает 0:

DATEDIFF(dd, @EndDateTime, i.mat_exp_dte)/365 

Смущенный сейчас, как рассчитать это. Нужно ли мне преобразовать DataDiff в другой тип данных?

ответ

13

Попробуйте это вместо этого.

DATEDIFF(dd, @EndDateTime, i.mat_exp_dte)/365.0 

Разделение int с помощью int возвращает int. Разделите десятичное число, и в результате вы получите десятичное число.

+0

Какова команда в sql для вырезания (! - не округлых) десятичных знаков? (скажем 2)? 1.12345 ---> 1.12 –

+0

выбрать литье (1.19999 как числовое (3, 2)) = 1,20 ..... плохое ... :) –

+0

@RoyiNamir - Последняя попытка :) 'select round (1.19999, 2, 1) ' –

2

.0 обозначает номер с плавающей запятой, поэтому расчеты включают десятичные знаки. Без него вы вычисляете целочисленное деление.