2015-07-23 4 views
0

Я пытаюсь использовать функцию Datediff, чтобы дать мне годы от пользователя, но это сложнее, чем я думал.Вычислить Возраст пользователя С Datediff (?)

SELECT DATEDIFF(DD,'1963-07-22','2016-07-23') 

Это даст мне дней я думаю, что это потому, что 2016 есть високосный год, и это хорошо.

что бы я хотел сделать, это получить ГОД, а не дни.

Если я изменяю интервал от DD до YY (YYYY), он вычисляет только год.

+1

Так что вы ожидаете в этом случае? Возраст младенца часто цитируется месяцами, а не днями или годами. –

+0

Это был лишь пример, но позвольте мне изменить даты. – Nils

+0

Дайте нам несколько примеров и то, что вы ожидаете в каждом случае. –

ответ

1

Правильный ответ вычислить чей-то возраст, или разница в усеченных лет между двумя датами

year(@today)-year(@birthDate)+floor((month(@today)-month(@birthdate)+floor((day(@today)-day(@birthdate))/31))/12); 

Это будет работать независимо от високосного года. И правильно, родился ли человек в более поздний месяц или даже более поздний день в том же месяце. Это также будет игнорировать часы и минуты, как это должно быть при расчете чей-то возраста.

2

По моему опыту, он работает лучше всего, чтобы использовать количество дней между двумя датами, а затем делить эту сумму на 365,25, чтобы быть точным, а затем округлить до четных лет. Думаю, это даст вам самый точный возраст.

+0

ОК спасибо, что я попробуйте это – Nils

+0

работает отлично, чем вы. – Nils

+1

Это может дать вам неправильный возраст, особенно в день рождения человека. Например, если кто-то родился на сегодняшней дате, так как вы можете вернуться, это должно дать вам неправильный возраст, за исключением случаев, когда их дата рождения была годом до високосного года, тогда это дает правильный возраст. – AgapwIesu