Das hatte ich schon probiert. Da ich aber eine Fehlermeldung bekam, dachte ich, dass mein Gedanke falsche wäre:
node [name](if:timestamp()<{{date:1825 day}})
Wenn man aus der C Programmierung kommt, hat man mit dieser Sprache manchmal seine Probleme. Das die “” trotz einer Funktion bleiben müssen, muss ich erst noch verinnerlichen.
Weil das {{…}} nicht zur Sprache von Overpass dazugehört
Overpass ist eine API, welche 2 (Overpass QL was du nutzt und Overpass XML) Abfragesprachen versteht. Und darauf aufbauend gibt es u.a. Overpass-Turbo als Webclient in welchem man halt mit den Sprachen eine Abfrage fomulieren kann. Und Overpass-Turbo bietet mit den {{…}}-Dingern halt Zusatzfunktionen an, welche umgewandelt werden, bevor es als Abfrage an die Overpass-API geht.
So wird aus {{bbox}} halt die “4 Zahlen mit Komma getrennt”-Kolonne, entsprechend dem, was die in OverpassTurbo dargestellte BBox halt ist. Overpass selbst kennt kein {{bbox}} und auch kein {{date:…}}.
Daher muss dann halt weiterhin das “” drum rum, weil es an Overpass halt tatsächlich als fester Datums-String geht, welcher lediglich von Overpass-Turbo jeweils dynamisch erzeugt wird.
Du würdest ja auch das hier (dein Eingangsbeispiel ohne “”) als falsch betrachten, oder?
(
node [name](if:timestamp()<2016-10-01)({{bbox}});
);
out body;
>;
out skel qt;
(Syntaktisch nur deshalb richtig, weil 2016-10-01 halt 2005 als Zahl ergibt xD)
Muss ich mir das also so vorstellen, dass Overpass Turbo als Web-Anwendung eine Spracherweiterung der API-Sprache hat. Und diese Erweiterungen wie ein Interpreter dann, zwar nicht in Maschinensprache, aber in die original Abfragesprache übersetzt?
Vielleicht werde ich jetzt bei dem kommenden Usselwetter doch mal das Wiki intensiver konsultieren.
Das läuft eher nach dem Prinzip “Text suchen und ersetzen”: Overpass turbo sucht die {{ … }} mit regulären Ausdrucken und ersetzt einfach Teile, wenn sie zu den Shortcuts passen.