Nachtrag:
Ich habe mir mal eine VBA-ähnliche Funktion gebaut:
DATESERIAL(Year as integer, Month as Integer, Day as integer) as Date
return date('0001-01-01') + (year - 1) Years + (Month - 1) months + (day - 1) days;
Fehlerabfangen falls Über-/Unterlauf.

Diese ist zum Rechnen manchmal ganz gut.
Beispiel:
Dateserial(Year(mydate), Month(Mydate) + 1, 0) = immer der Letzte des Monats
Ich denke da gibt es immer wieder Anwendungen, auch z.B. bei alten Strukturen mit getrennten Datumfeldern.

Ggf. kann man ja noch einen "case when Year < 100 then case when Year < 40 then year + 2000 else year + 1900 end else year end" einbauen um 2-stellige Jahre zu berücksichtigen (wie Microsoft auch).