andrea: Access - Datum/Zeit zusammenzählen

Hallo zusammen

Mit welchem befehl kann man im Access Felder des Typen Datum/Zeit zusammenzählen?

Danke für die Hilfe

  1. Hallo andrea,

    was genau meinst Du mit "zusammenzählen"? Wenn Du etwa die Sekunden seit irgendeinem Stichtag berechnen willst, könnte ich mir vorstellen, dass man mit Hilfe der Year-, Month-, Day- Hour-, etc. Funktionen die Sekunden bis Tagesanfang des Datums date berechnen kann und dann die Sekunden bis zum Zeitpunkt time hinzuaddieren kann.

    Ansonsten musst Du vielleicht noch mal genauer erklären, was Du machen willst.

    Axel

    1. Hallo Axel

      Ich habe eine Datenbank für ein Rennen erstellt. Es wird jeweils ein dreier Team starten. Und es soll eine Gesamtzeit des Teams ausgerechnet werden. d.h. man muss immer drei Zeiten (hh:mm:ss) zusammenzählen.

      1. Probier es doch einmal mit der DateAdd-Funktion. Dort kann man zu einem Datum (bzw. auch zu einer Uhrzeit) eine andere Uhrzeit hinzuaddieren.

        1. hmm, und wie geht diese Funktion?

          Ich kenne mich mit Access kaum aus...

          1. hmm, und wie geht diese Funktion?

            Ich kenne mich mit Access kaum aus...

            Die Syntax ist: DateAdd(intervall,number,date)
            intervall ist ein Zeichen. Für dich relevant sind etwa:
            h Stunde
            n Minute
            s Sekunde

            Bsp.:
            DateAdd("h", 1, now()) sollte ergeben: jetzige Zeit plus 1 Stunde

            Folgende Funktion könnte ich mir vorstellen. Angenommen, der erste Rennfahrer kommt nach 1 Stunde, 20 Minuten und 45 Sekunden ins Ziel:
            Dim Datum As Date
            Datum = "01.01.04"
            Datum = DateAdd("h", 1, Datum)
            Datum = DateAdd("m",20, Datum)
            Datum = DateAdd("s",45, Datum)

            Jetzt steht in Datum so etwas wie "01.01.04 01:20:45". Jetzt kannst Du genauso die Rennzeiten der anderen beiden Fahrer hinzuaddieren. Am Ende gibt Dir die Tageszeit in Datum die Gesamtsumme der Zeit wieder:

            Zeit = Format(Datum, "hh:mm:ss") oder ähnlich.

            Für Details kannst Du die Hilfe von Access-Visual Basic aufrufen.

            1. Hallo,

              Die Syntax ist: DateAdd(intervall,number,date)

              warum willst Du die Zeiten nicht einfach mit dem Additionsoperator addieren?

              Bsp:
              Tabelle1:
              Feld1      Feld2       Feld3
              01:30:00   01:30:00    01:30:00

              SELECT Tabelle1.Feld1, Tabelle1.Feld2, Tabelle1.Feld3, [feld1]+[feld2]+[feld3] AS Summe
              FROM Tabelle1;

              ergibt:
              Feld1      Feld2       Feld3      Summe
              01:30:00   01:30:00    01:30:00   04:30:00

              viele Grüße

              Axel

              1. hallo axel

                danke für die hilfe. doch nun habe ich das Problem, dass bei mir die Zeiten untereinander und nicht nebeneinander sind...

                wie kann ich das dann lösen?

                1. Hallo Andrea,

                  danke für die hilfe. doch nun habe ich das Problem, dass bei mir die Zeiten untereinander und nicht nebeneinander sind...

                  Aha *g*. Du hast also Rollschuhe, wo die Räder alle in einer Reihe sind, nicht immer zwei nebeneinander, wie bei normalen Rollschuhen. Der Fachbegriff hierfür ist Inline-Skate.

                  Das, was in Datenbanktabellen nebeneinander steht, sind Felder. Das, was untereinander steht, sind Datensätze. Du hast also je Läufer jeder Mannschaft einen Datensatz mit den Feldern Mannschaft, Laeufer und Zeit. Etwa so:

                  Tabelle2:
                  Mannschaft  Laeufer  Zeit
                  1           a        01:25:00
                  1           b        00:45:00
                  1           c        00:57:00
                  2           d        01:03:00
                  2           e        00:58:00
                  2           f        01:45:00

                  wie kann ich das dann lösen?

                  SELECT Tabelle2.Mannschaft, Sum(Tabelle2.Zeit) AS [Summe von Zeit]
                  FROM Tabelle2
                  GROUP BY Tabelle2.Mannschaft;

                  ergibt:
                  Mannschaft   Summe von Zeit
                  1            03:07:00
                  2            03:46:00

                  viele Grüße

                  Axel

                  1. werde es gleich versuchen, ob es klappt.

                    danke für die hilfe

                    1. Ok, das hat mal geklappt. aber nun hab ich ein anderes Problem.

                      Ich habe ein Tabelle1 die sieht folgendermassen aus:
                      Mannschaft   Zeit1   Zeit2   Zeit 3

                      und eine Tabelle Mannschaft die sieht folgedermassen aus:

                      Mannschaft StartNr1 StartNr2  StartNr3

                      und eine Abfrage1 die folgendermassen aussieht:

                      ich habe die Tabelle1 und die Tabelle Mannschaft hinzugefügt und eine Beziehung zwischen Mannschaft aus Tabelle1 und Mannschaft gemacht.
                      hier der Code:

                      SELECT Mannschaft.Mannschaft FROM Mannschaft INNER JOIN Tabelle1 ON Mannschaft.Mannschaft = Tabelle1.Mannschaft,  Sum(Tabelle1.Zeit) AS [Gesamtzeit]
                      FROM Tabelle1
                      GROUP BY Mannschaft.Mannschaft;

                      aber es gibt eine Fehlermeldung...

                      1. Hallo,

                        Ich habe ein Tabelle1 die sieht folgendermassen aus:
                        Mannschaft   Zeit1   Zeit2   Zeit 3

                        und eine Tabelle Mannschaft die sieht folgedermassen aus:

                        Mannschaft StartNr1 StartNr2  StartNr3

                        und eine Abfrage1 die folgendermassen aussieht:

                        SELECT Mannschaft.Mannschaft FROM Mannschaft INNER JOIN Tabelle1 ON Mannschaft.Mannschaft = Tabelle1.Mannschaft,  Sum(Tabelle1.Zeit) AS [Gesamtzeit]
                        FROM Tabelle1
                        GROUP BY Mannschaft.Mannschaft;
                        aber es gibt eine Fehlermeldung...

                        Ja, weil es in Tabelle1 kein Feld "Zeit" gibt. Es gibt nur die Felder Zeit1   Zeit2   Zeit 3.

                        Was steht denn in den Feldern Zeit1   Zeit2   Zeit 3 drin? Wie hängen diese Werte mit StartNr1 StartNr2  StartNr3 zusammen und was soll je Mannschaft summiert werden?

                        viele Grüße

                        Axel

                  2. das erste Problem ist nun schon aufgetaucht...

                    es gibt mir die Zeit nicht im Format hh:mm:ss aus...

                    So sieht mein Code aus:

                    SELECT Zeiten.Mannschaft, Sum(Zeiten.Zeit) AS [Summe von Zeit]
                    FROM Zeiten
                    GROUP BY Zeiten.Mannschaft;

                    was habe ich falsch gemacht?

                    1. Schau Dir die Entwurfsansicht Deiner Abfrag an:
                      Dort rechter Mausklick auf die Spalte, in der Du die Zeiten summierst. Geh auf Eigenschaften. Gib dort im Eingabeformat: hh:mm:ss ein (ohne Anführungszeichen). Dann müsste es gehen.

                      Axel

                      1. Hallo Namensvetter,

                        Schau Dir die Entwurfsansicht Deiner Abfrag an:
                        Dort rechter Mausklick auf die Spalte, in der Du die Zeiten summierst. Geh auf Eigenschaften. Gib dort im Eingabeformat:

                        Bitte informiere Dich über die Unterschiede zwischen Format und Eingabeformat (InputMask).

                        hh:mm:ss ein (ohne Anführungszeichen). Dann müsste es gehen.

                        Hallo Andrea,

                        siehe oben, nur im Feld Format.

                        viele Grüße

                        Axel

                2. Hallo andrea,

                  den Vorschlag von Axel Richter würde ich gerne aufgreifen. Ich vermute, das ist wirklich die einfachere Methode. Mit "Zeiten untereinander" glaube ich, dass Du sagen willst, in jeder Zeile steht eine neue Zeit. Probier es vielleicht wirklich mal mit folgender Abfrage. Du kannst Sie erzeugen, indem du die nachfolgende Zeile per Copy and Paste in die SQL-Ansicht einer neuen Abfrage einfügst und an Deine Bezeichnungen anpasst (Hier Tabelle Test mit Spalten Zeit und Team angenommen):

                  SELECT Sum(Test.Zeit) AS [Summe von Zeit], Test.Team
                  FROM Test
                  GROUP BY Test.Team;

                  Stelle dann in der Entwurfsansicht für die Spalte Zeit das Eingabeformat auf hh:mm:ss ein (ohne Anführungszeichen).

                  In der Ausgabe erhältst Du eine Tabelle, in der pro Team die Gesamtzeiten aufgelistet sind.