🙏 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!🍀

❤️ DANKE >> << DANKE ❤️

>> 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"

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Nikolaus
Beiträge: 2
Registriert: Mi 5. Dez 2018, 21:08

Berechnungen mit Feldern vom Typ "Zeit"

Beitrag von Nikolaus » Mi 5. Dez 2018, 21:19

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

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Berechnungen mit Feldern vom Typ "Zeit"

Beitrag von RobertG » Do 6. Dez 2018, 20:30

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:

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"
Jetzt könntest Du die Stunden mit 3600 und die Minuten mit 60 multiplizieren sowie alles addieren, dann hast Du die Zeit in Sekunden:

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"
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.

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")
Leider kannst Du diese Zeiten nicht mehr sinnvoll anzeigen. Dazu musst Du die Zeit als Bruchteil eines Tages berechnen:

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")
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
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

Nikolaus
Beiträge: 2
Registriert: Mi 5. Dez 2018, 21:08

Re: Berechnungen mit Feldern vom Typ "Zeit"

Beitrag von Nikolaus » Sa 8. Dez 2018, 12:29

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


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.



Antworten