--in T-SQL
AND CASE WHEN DATEADD(YY, DATEDIFF(YY, p.birth_date , apt.appointment_datetime), p.birth_date ) > apt.appointment_datetime
THEN DATEDIFF(YY, p.birth_date , apt.appointment_datetime) - 1
ELSE DATEDIFF(YY, p.birth_date , apt.appointment_datetime)
END >= 18 --18 yrs or older at appointment time
, CASE WHEN DATEADD(YY, DATEDIFF(YY, p.date_of_birth , GETDATE()), p.date_of_birth ) > GETDATE()
THEN DATEDIFF(YY, p.date_of_birth , GETDATE()) - 1
ELSE DATEDIFF(YY, p.date_of_birth , GETDATE())
END AS Current_age
--in Postgres, YY has to be year
, CASE WHEN DATEADD(year, DATEDIFF(year, x.birth_date , GETDATE()), x.birth_date ) > GETDATE()
THEN DATEDIFF(year,x.birth_date , GETDATE()) - 1
ELSE DATEDIFF(year, x.birth_date , GETDATE())
END AS Current_age