Access - Datum/Zeit zusammenzählen
andrea
- datenbank
Hallo zusammen
Mit welchem befehl kann man im Access Felder des Typen Datum/Zeit zusammenzählen?
Danke für die Hilfe
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
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.
Probier es doch einmal mit der DateAdd-Funktion. Dort kann man zu einem Datum (bzw. auch zu einer Uhrzeit) eine andere Uhrzeit hinzuaddieren.
hmm, und wie geht diese Funktion?
Ich kenne mich mit Access kaum aus...
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.
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
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?
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
werde es gleich versuchen, ob es klappt.
danke für die hilfe
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...
Hallo,
Ich habe ein Tabelle1 die sieht folgendermassen aus:
Mannschaft Zeit1 Zeit2 Zeit 3und 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
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?
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
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
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.