Dateformat isn't mapped by default for MySQL so indeed you need to add a custom function mapping for that function. If you can't figure it out, just post what you got that doesn't work and we'll help you through it.
DateAdd() is mapped for MySQL as a function. (so in queryspec you can use DateTimeFunctions.AddDays etc.) and the Day/Year/Month etc. properties of DateTime are mapped as well, and which are available as properties on DateTimeFunctions as methods. So e.g.
myQuery.Select(DateTimeFunctions.Year(YourEntityFields.Birthday).As("BirthdayYear"))
selects the year value of the birthday field from the query in myQuery.
The function to map you're after is likely 'DateDiff' which substracts two dates, so you can do birthday + 18 years (using DateAdd, which is mapped) and then check whether datediff that with NOW() gives a negative or a positive value. (
DateDiff(now(), DateAdd(birthday, YEAR, 18)) > 0
-> under age )