Seite 1 von 1

(gelöst) Datumsberechnungen

Verfasst: Di 6. Dez 2022, 14:10
von Stegull
Werte Mitforisten, geschätzter RobertG,

als Laie ist es mir gelungen, aus einer Fremdsoftware Tabellen zu exportieren, nach Calc zu konvertieren und nach Base zu importieren. Hier habe ich Tabellen formatiert, Abfragen eingerichtet und Formulare mit Unterformularen erstellt. Dies unter Zuhilfenahme von Youtube-Tutorials und vielem Recherchieren im Internet. Bisher bin ich beim Aufbau meines kleinen Projektes gut vorangekommen. Im OO-Forum wurde mir von RobertG schon schnell geholfen.

Meine Formulare können Filtern. Nun möchte ich einige der gefilderten Daten berechnen lassen und das Ergebnis auf dem Filter-Formular anzeigen. Es geht hierbei um Datumsangaben aus einer Tabelle. Genauer - zwei Spalten.

Eine Spalte (Format: Date) = Auftragsdatum (Datum der Ausstellung des Auftrages)
Zweite Spalte (Format: Date) = Ausführung des Auftrages (Termine der Ausführung des Auftrages)

Meine Fremdsoftware exportiert zu jedem Auftrag in Spalte Auftragsdatum mehrere Zeilen gleichen Datums, wie Termine der Ausführung stattfinden. Also 8 Termine am 14.09., 26.10., 02.11., 09.11., 16.11., 23.11., 30.11. in Spalte 2 werden in Spalte 1 mit dem gleichen Datum angezeigt.

Spalte 1 Auftragsdatum/Spalte 2 Termine
Spalte 1 Auftragsdatum/Spalte 2 Termine
LibreOffBsp1.JPG (24.31 KiB) 1508 mal betrachtet


Ich möchte nun den Abstand zwischen Auftragsdatum und dem 1. Termin (22.08.22 - 14.09.22) in Tagen berechnen und anzeigen lassen und es wäre mir eine große Freude, wenn ich den Tagesabstand zwischen 1. und dem letzten Termin (14.09.22 - 30.11.22) anzeigen lassen könnte.

Vielen Dank schonmal im Vorraus.

Re: Datumsberechnungen

Verfasst: Di 6. Dez 2022, 15:31
von RobertG
Hallo Stegull,

Du hast das AufDat (Auftragsdatum) und das AusDat (Ausführungsdatum)

Code: Alles auswählen

SELECT "Tabelle".*,  
DATEDIFF('day', "Tabelle"."AufDat", "Tabelle"."AusDat") AS "Tage" 
FROM "Tabelle"
Das würde Dir die Tagesdifferenz bei der internen HSQLDB raus geben.
Um den Unterschied zwischen dem ersten und den letzten Wert heraus zu bekommen ist es wichtig, ein Feld zu haben, das nur für diese Tabellenzeilen zuständig ist. Ich nenne das Feld einfach einmal "Nr", in der Hoffnung, dass "Nr" nur für den gleichen Eingang (gleiches Datum, gleiche Person) gleich sind. Ansonsten müssen da andere Felder rein.

Code: Alles auswählen

SELECT "a".*,  
DATEDIFF('day', "a"."AufDat", "a"."AusDat") AS "Tage", 
DATEDIFF('day', 
(SELECT MIN("AusDat") FROM "Tabelle" WHERE "Nr" = "a"."Nr"),
(SELECT MAX("AusDat") FROM "Tabelle" WHERE "Nr" = "a"."Nr")) 
AS "Tage_Ausführung" 
FROM "Tabelle" AS "a"
Gruß

Robert

Re: Datumsberechnungen

Verfasst: Di 6. Dez 2022, 17:48
von Stegull
Hallo RobertG,

vielen, vielen Dank.
Das hat sehr gut geklappt. Ich bin begeistert.