Hallo Zusammen, ich hole mir vom Tagesdatum (Systemdatum) das Jahr und möchte davon zwei Jahre abziehen.
Wenn ich aber vom Tagesdatum mit String das Jahr herausschneide, dann kann ich anschließend von einem String keine zwei mehr abziehen
Lösungsansatz
SUBSTR ( to_date(‘2023-03-21’ , ‘YYYY-MM-DD’) , 1 , 4) ==> das funktioniert ==> liefert mir ‘2023’
Jetzt kann ich aber hiervon keine 2 Jahre mehr abziehen.
2.Lösungsansatz
to_date(‘2023-03-21’ , ‘YYYY-MM-DD’) + interval ‘+24 months’ ==> liefert folgendes Ergebnis
2021-03-21 00:00:00.000 ==> hier kann ich aber das Jahr nicht mit substr rausschneiden
select substring( (to_date(‘2023-03-21’ , ‘YYYY-MM-DD’) + interval ‘-24 months’),1,4)
Fehlermeldung;
SQL-Fehler [42883]: ERROR: function pg_catalog.substring(timestamp without time zone, integer, integer) does not exist
Hinweis: No function matches the given name and argument types. You might need to add explicit type casts.
Position: 8
Das funktioniert leide nicht, weil wenn ich jetzt in meiner where Bedingung, diese Zahl mit einer anderen zahl vergleiche, dann stimmt das Format nicht.
er vergleicht 2023 mit 2.023
nein ich will nicht 2023 mit 2.023 vergleichen. Das Ergebnis des select (select substr(to_date(‘2023-03-21’ , ‘YYYY-MM-DD’)::text,1,4)::int -2;
?column? ) von dir, liefert bei mir das Ergebnis 2.023 und das kann ich nicht mit 2023 vergleichen.
Ich brauche nicht das Ergebnis “2.023” sonder 2023
wenn Du mit irgend einer GUI arbeitest: laß die mal weg und nehme psql. Und dann wirst Du mein Beispiel nachvollziehen können. Wenn Deine GUI da was verbockt (geht schon los mit ’ statt ') dann ist das kein Problem von PostgreSQL sondern von Deiner GUI.
ja, sog. CAST-Operator. Damit kann man Datentypen konvertieren. Eine substr() - Funktion liefert halt einen STRING. Wenn ich damit rechnen will, muß ich es konvertieren, hier in ein INTEGER.