ich würde es einfach so machen:
<CMS_FUNCTION name="contentSelect" resultname="win">
<CMS_PARAM name="schema" value="wasistneu"/>
<CMS_VALUE_PARAM name='von' value='#startdate.set("day_of_month",1).set("month",0).set("year",st_jahr).set("hour",0).set("minute",0).set("second",0).getTime()' />
<CMS_VALUE_PARAM name='bis' value='#startdate.set("day_of_month",1).set("month",0).set("year",st_jahr+1).set("hour",0).set("minute",0).set("second",0).getTime()' />
<QUERY entityType="eintrag">
<FILTERPARAM parameter="bis" datatype="java.util.Date" value="0"/>
<FILTERPARAM parameter="von" datatype="java.util.Date" value="0"/>
<AND>
<GTE attribute="datum" parameter="von" />
<LTE attribute="datum" parameter="bis" />
</AND>
</QUERY>
</CMS_FUNCTION>
Dann wird ein Datum übergeben und das Ganze bleibt lesbar [gut lesbar schreibe ich mal lieber nicht
]
Alternativ kann man sich das Datumsobjekt auch komplett zusammenbauen, aber da man dazu class(...) benötigt, manipuliere ich lieber ein Datumsobjekt, welches im Kontext steht.
Tipp: Wenn man die News des letzten Jahres haben will, könnte man #startdate.add("year",-1) benutzen [ebenso wie die der letzten Woche, des letzten Monats...]
Hinweis: natürlich will man zwar die News des letzten Jahres haben, aber nicht exakt ein Jahr zurück, sondern vom Ersten des entsprechenden Monats - dann wird es wieder so "hübsch" wie oben 
Nachricht geändert durch Holger Höbbel: class-Tags der Rechtschreibkontrolle wieder entfernt, Ticks wieder korrigiert
Nachricht erneut geändert durch Holger Höbbel: korrekte Lösung hier eingefügt