Hallo,
jetzt suche ich schon eine ganze Weile und finde keine Antwort...
Problem: zum Berechnen einer Sonderwertung bei einer Sportveranstaltung muss ich Felder vom Typ "zeit" (oder noch besser "VARCHAR" - dann brauche ich nicht erst nach einem Cut&Paste-Import von einer Website den Datentyp ändern) mit einem Faktor multiplizieren, was in Calc ohne weiteres funktioniert. In Base funktioniert das nicht. Ich kann in einer Abfrage z.B. nicht ein Feld namens "Zeit1" mit " ...AS "Zeit"*2... " hinzufügen.
Welchen Trick gibt es, das trotzdem zu tun?
LG
Ingo
🙏 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🍀 Wir hoffen auf Ihre Unterstützung - vielen Dank!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Berechnungen mit Feldern vom Typ "Zeit"
Re: Berechnungen mit Feldern vom Typ "Zeit"
Hallo Ingo,
mit Textfeldern kannst Du nicht rechnen. Da sind Datenbanken deutlich stringenter als Tabellenkalkulationen.
Zeiten kannst Du nicht multiplizieren, weil die z.B. bei der internen Datenbank als String wahrgenommen werden. Die Doppelpunkte dazwischen stören. Du müsstest also Stunden, Minuten und Sekunden voneinander trennen und umrechnen. So etwas geht über den folgenden Zugang:
Jetzt könntest Du die Stunden mit 3600 und die Minuten mit 60 multiplizieren sowie alles addieren, dann hast Du die Zeit in Sekunden:
Und wenn Du das jetzt multiplizieren willst, dann geht das durch eine Klammerung natürlich auch noch. Ich würde aber diese Umrechnung in eine Unterabfrage oder eine Ansicht packen, so dass Du nur die Integerwerte zu Gesicht bekommst.
Leider kannst Du diese Zeiten nicht mehr sinnvoll anzeigen. Dazu musst Du die Zeit als Bruchteil eines Tages berechnen:
Die vielen Nullen sind notwendig, damit nicht so schnell Rundungsfehler auftauchen. Sie machen aus den Integer-Werten dann auch Dezimalwerte. Formatierst Du die Spalte anschließend als Zeit, dann wird die korrekte Uhrzeit angegeben.
Gruß
Robert
mit Textfeldern kannst Du nicht rechnen. Da sind Datenbanken deutlich stringenter als Tabellenkalkulationen.
Zeiten kannst Du nicht multiplizieren, weil die z.B. bei der internen Datenbank als String wahrgenommen werden. Die Doppelpunkte dazwischen stören. Du müsstest also Stunden, Minuten und Sekunden voneinander trennen und umrechnen. So etwas geht über den folgenden Zugang:
Code: Alles auswählen
SELECT CAST(LEFT("Zeit",2) AS INTEGER) AS "Stunden",
CAST(SUBSTRING("Zeit",4,2) AS INTEGER) AS "Minuten",
CAST(RIGHT("Zeit",2) AS INTEGER) AS "Sekunden" FROM "Zeiten"
Code: Alles auswählen
SELECT CAST(LEFT("Zeit",2) AS INTEGER)*3600 +
CAST(SUBSTRING("Zeit",4,2) AS INTEGER) * 60 +
CAST(RIGHT("Zeit",2) AS INTEGER) AS "Sekunden" FROM "Zeiten"
Code: Alles auswählen
SELECT "Sekunden"*3 FROM (SELECT CAST(LEFT("Zeit",2) AS INTEGER)*3600 +
CAST(SUBSTRING("Zeit",4,2) AS INTEGER) * 60 +
CAST(RIGHT("Zeit",2) AS INTEGER) AS "Sekunden" FROM "Zeiten")
Code: Alles auswählen
SELECT "Tage" * 3 FROM (SELECT CAST(LEFT("Zeit",2) AS INTEGER) / 24.00000000 +
CAST(SUBSTRING("Zeit",4,2) AS INTEGER) /1440.00000000 +
CAST(RIGHT("Zeit",2) AS INTEGER) / 86400.00000000 AS "Tage" FROM "Zeiten")
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Berechnungen mit Feldern vom Typ "Zeit"
Hallo Robert,
vielen Dank für die super-ausführliche Antwort!!
Ich werde erst über Weihnachten wieder dazu kommen, mich darum zu kümmern. Wenn was nicht klappt, frage ich dann nochmal nach.
Viele Grüße
Ingo
vielen Dank für die super-ausführliche Antwort!!
Ich werde erst über Weihnachten wieder dazu kommen, mich darum zu kümmern. Wenn was nicht klappt, frage ich dann nochmal nach.
Viele Grüße
Ingo
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.