четверг, 8 сентября 2011 г.

XPath: определение возраста

if($birthDate='') 
	then '' 
	else year-from-date(xs:date(local-date()))-year-from-date($birthDate)
		-(if(month-from-date($birthDate) > month-from-date(xs:date(local-date())))
			then 1
			else (if(month-from-date($birthDate) < month-from-date(xs:date(local-date())))
					then 0
					else (if(day-from-date($birthDate) > day-from-date(xs:date(local-date())))
							then 1
							else 0
						)
				)
			)
Возможно, можно как-то сделать это проще, но я пока способа не нашел. Вычитание дат дает результат типа xs:dayTimeDuration вместо xs:yearMonthDuration, из которого было бы удобно извлечь число лет. А вот по числу дней число лет определить очень сложно из-за високосных годов.

Комментариев нет:

Отправить комментарий