ich bin gerade dabei eine Produktionsdatenbank uaf postgreSQL umzustellen und habe folgendes Problem:
In einer Tabelle stehen Produktinszeiten für Artikel und in einer Übersicht soll ausgegeben werden, wann die Artikel fertig produziert wären, ab dem heutigen Datum.
Als Formel geschrieben: Datum + (Menge*Zeit) ==> Ausgabe
in meiner bisherigen Datenbank ging das relativ einfach: Select @now() + (Menge * ba_zykzeit/1440), … FROM SYSADM.BA
(In ba_zykzeit steht die Produktionszeit in Minuten)
Mein erster Versuch in der Postgre war folgendes: Select current_timestamp + (Menge * ba_zykzeit/1440) FROM SYSADM.BA
Aber da kommt nur die Menldung : ERROR: operator does not exist: timestamp with time zone + numeric
Das Beispiel in der Doku habe ich gesehen, die arbeiten dort aber nur mit Konstanten Werten, z.B. Select current_timestamp + '5 day’
oder so was, aber wie mache ich das mit variablen Werten aus einer Tabelle.
Also in der Datenbank steht in einem Feld die Zahl der Minuten als Integerwert
In der alten DB (Gupta SQL-Base) kann man mit Datumswerten einfach rechnen:
Datum + 1 = Ein Tag dazu
Datum + 10 = Zehn Tage dazu
Datum - 1 = Ein Tag zurück
Datum + (1/24) ) = Eine Stunde vor
Datum + (1/1440) = Eine Minute vor (2460=1440)
Datum + (X(1/1440)) = X Minuten vor
Usw.
Die Formel sollte lauten:
Datumswert[Timestamp] + (Menge[Int] * Zeit[Int] / 1440)[ergibt Tage] = Datumswert[Timestamp]
das funktioniert in PostgreSQL nicht so. Schau Dir mal Kapitel 9.9. ‘Date/Time Functions and Operators’ in der Doku an. Da sind auch Beispiele aufgeführt. Manchmal ist es auch notwendig einen Typ zu CASTEN!
liefert genau das gesuchte Ergebnis.
Ich gebe dem Operator praktisch vor, dass die Fünf ein Wert in Minuten ‘00:01:00’ oder Sekunden ‘00:00:01’ oder Stunden ‘01:00:00’ ist oder ?
Ist schon eine ganz andere Denke, aber man muss sich halt umgewöhnen.