barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

четверг, 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, из которого было бы удобно извлечь число лет. А вот по числу дней число лет определить очень сложно из-за високосных годов.

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

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