Wie multipliziere ich Datumswerte?

Servus,

Ich bin gerade dabei einen import von altdaten zu übernehmen. Dabei muß ich einen Offset berechnen…

ich versuche dabei folgendes zu bewerkstelligen:

select erfassungsdatum + '(6*5) day' from t_kv where nkvkey = 287

Diese Zeile soll bewirken, dass zum erfassungsdatum 6*5 also 30 tage dazuaddiert werden. Wenn ich dies ausführe werden jedoch 11 tage dazuaddiert.
In der Dokumentation steht folgendes Beispiel:
Name Example Result

  •   interval '1 hour' * int '3'    interval '03:00'
    

Also habe ich unter anderem folgendes versucht:

select erfassungsdatum + '6 day' * int '5' from t_kv where nkvkey = 287

Dabei bekomme ich aber einen nichtsausagenden Fehler…
Stelle: 0
PostgreSQL:1No query has been executed with that handle

Weiss jemand Rat?

Gruß Ingo



test=# select current_date + ((6 * 5)||'days')::interval;
      ?column?
---------------------
 2007-10-11 00:00:00
(1 row)

Andreas

Danke für die schnelle Hilfe,

Leider kommt unsere Programmiersprache nicht mit 2 Doppelpunkten hintereinander kar. Wir haben uns jetzt beholfen, indem wir mit Wochen arbeiten…

Trotzdem Danke!

Ohne Doppelpunkte:

test=# select current_date + cast(((6 * 5)||'days') as interval);
      ?column?
---------------------
 2007-10-11 00:00:00

Andreas

Hä? Was habt ihr denn da am laufen …
Ausserdem: den Query setzt man (hoffentlich) als String zusammen und da sollte es ja egal sein, wieviele Doppelpunkte im String stehen …

Naja bei unserer Programmiersprache nicht :frowning:

Dort ist ein Doppelpunkt ein Sonderzeichen, um anzuzeigen, dass das Resultset der Abfrage in eine Bindvariable übergeben wird. Bindvariablen sind lokale variablen einer Funktion innerhalb derer ich die SQL abfrage mache.

Beispiel


SQLPrepareAndExecute( cursorhandle, “Selct XY from tabelle into :nKey” )

Damit wird Der Inhalt von XY in die lokale variable “nKey” geschrieben.
Bei einem doppelten : ist unsere Sprache dann aufgeschmissen…

Trotzdem Danke!

Na ja, nicht ganz aufgeschmissen, aber das CAST() als Funktion berechnen wir dir extra.

PostgreSQL: Documentation: Manuals: PostgreSQL 8.2: Value Expressions

Abschnitt 4.2.8

Hab ich schon gelesen:

akretschmer am 11.09.2007 10:16

trotzdem Danke für die Mühe! Ebenso an akretschmar!

Ohne eure schnelle und gute hilfe wäre ich und die meisten anderen Benutzer wirklich sehr aufgeschmissen!