Access 2007 - Datumsformat Tage,Stunden,Minuten
Hallo,
bei einer Accessauswertung für Zeitbuchungen sollen die Datenwerte, z.B. 0,25 (=15 Minuten) im Format Tag:Stunden:Minuten (also 00:00:15) abgebildet werden.
Das Format hh:nn liefert zumindest schon einmal die Stunden und die Minuten.
dd liefert leider den Tag der Zeitbuchung, z.B. 31 für den 31. einen Monats und nicht den Summenwert der gebuchten Zeit in Tagen.
Wie lautet das Format um die Anzahl der Tage anzuzeigen?
Ich danke euch für eure Mühe.
Grüße Hugi
bei einer Accessauswertung für Zeitbuchungen sollen die Datenwerte, z.B. 0,25 (=15 Minuten) im Format Tag:Stunden:Minuten (also 00:00:15) abgebildet werden.
Das Format hh:nn liefert zumindest schon einmal die Stunden und die Minuten.
dd liefert leider den Tag der Zeitbuchung, z.B. 31 für den 31. einen Monats und nicht den Summenwert der gebuchten Zeit in Tagen.
Wie lautet das Format um die Anzahl der Tage anzuzeigen?
Ich danke euch für eure Mühe.
Grüße Hugi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 167417
Url: https://administrator.de/contentid/167417
Ausgedruckt am: 22.11.2024 um 22:11 Uhr
5 Kommentare
Neuester Kommentar
Moin Moin,
du unterliegst da einem Irrtum, das "Format" das du suchst gibt es nicht als Datums-/Zeitformat.
Deine Werte sind mathematisch berechnete Zahlen und keine gültigen Datumswerte. D.h. du musst dir selbst den Zeichenstring zusammensetzen und als Text speichern.
Beispiel: TextVar = SummeTage & ":" & SummeStunden & ":" & SummeMinuten
Mit führenden Nullen, wird es etwas umfangreicher
Grüße aus Rostock
Wolfgang
(Netwolf)
du unterliegst da einem Irrtum, das "Format" das du suchst gibt es nicht als Datums-/Zeitformat.
Deine Werte sind mathematisch berechnete Zahlen und keine gültigen Datumswerte. D.h. du musst dir selbst den Zeichenstring zusammensetzen und als Text speichern.
Beispiel: TextVar = SummeTage & ":" & SummeStunden & ":" & SummeMinuten
Mit führenden Nullen, wird es etwas umfangreicher
Grüße aus Rostock
Wolfgang
(Netwolf)
Moin Hugi1987,
dein Ansatz mit dem Datumsformat "dd:hh:nn:ss" war schon richtig, aber nicht ganz zu Ende gedacht.
Zwei Denkfehler sind enthalten.
a) mit "1800" als Datums/Zeitwert kann Access natürlich wenig anfangen - die "Grundeinheit" ist immer "ein Tag" gleich 24 Stunden gleich 24*60*60 sec gleich 86400 Sekunden. Erst der Quotient 1800/86400 ist eine gültige Zeitangabe.
b) Wenn du deine 1800/86400 [sec] damit anzeigen lässt, dann wird natürlich der Wert 1800/86400 vom Beginn der Access-Zeitrechnung an gerechnet angezeigt.
Also vom 30.12.1899 an.
Du willst aber eigentlich - zumindest sollte es ausreichen - eine Summe von Stunden in diesem Monat anzeigen.
Das macht die Sache doch handhabbar.
Leider kenne ich Aufbau deiner Tabelle/deines Berichts nicht, deshalb ein Beispielselect auf irgendeine Tabelle mit einem Satz oder mehr:
Erläuterung:
Ergebnis der Abfrage ist nur ein Datensatz, egal wie viele Datensätze die beliebige "whatever"-Tabelle enthält.
Im ersten Feld wird angezeigt
--> die Demo für nackte 1800 sec vom Beginn der Accesszeitrechnung an im Format "yyyy:mm:dd:hh:nn:ss"
--> Ergibt 0 Tage, also den 30.12.1899 plus 0 Stunden + 30 Minuten (1800 sec)
Im zweiten Feld "lasse ich rechnen" 10 Tage plus 1800 Sec "aber alle in diesem Monat".
10 Tage sind, wenn ein Tag gleich 86400 Sekunden hat, logischerweise 864000 Sekunden. Bekomm ich hin.
Zusätzlich gebe ich als Startwert mit den letzten Tag des Vormonats mit DateSerial( diesJahr, dieser Monat, null Tage)
Ist ein bisschen um die Ecke formuliert, aber um Access auszutricksen reicht es.
Angezeigter Wert in dem von dir gewünschten Format "dd.hh:nn:ss" ist
--> 10 Tage, 0 Stunden 30 minuten.
Works as designed.
Grüße
Biber
dein Ansatz mit dem Datumsformat "dd:hh:nn:ss" war schon richtig, aber nicht ganz zu Ende gedacht.
Zwei Denkfehler sind enthalten.
a) mit "1800" als Datums/Zeitwert kann Access natürlich wenig anfangen - die "Grundeinheit" ist immer "ein Tag" gleich 24 Stunden gleich 24*60*60 sec gleich 86400 Sekunden. Erst der Quotient 1800/86400 ist eine gültige Zeitangabe.
b) Wenn du deine 1800/86400 [sec] damit anzeigen lässt, dann wird natürlich der Wert 1800/86400 vom Beginn der Access-Zeitrechnung an gerechnet angezeigt.
Also vom 30.12.1899 an.
Du willst aber eigentlich - zumindest sollte es ausreichen - eine Summe von Stunden in diesem Monat anzeigen.
Das macht die Sache doch handhabbar.
Leider kenne ich Aufbau deiner Tabelle/deines Berichts nicht, deshalb ein Beispielselect auf irgendeine Tabelle mit einem Satz oder mehr:
SELECT distinct format(1800/86400, "yyyy:mm:dd:hh:nn:ss") ,
format( dateserial(year(now), month(now), 0)+(864000+1800)/(86400), "dd:hh:nn:ss")")
FROM whatever;
Ergebnis der Abfrage ist nur ein Datensatz, egal wie viele Datensätze die beliebige "whatever"-Tabelle enthält.
Im ersten Feld wird angezeigt
1899:12:30:00:30:00
--> Ergibt 0 Tage, also den 30.12.1899 plus 0 Stunden + 30 Minuten (1800 sec)
Im zweiten Feld "lasse ich rechnen" 10 Tage plus 1800 Sec "aber alle in diesem Monat".
10 Tage sind, wenn ein Tag gleich 86400 Sekunden hat, logischerweise 864000 Sekunden. Bekomm ich hin.
Zusätzlich gebe ich als Startwert mit den letzten Tag des Vormonats mit DateSerial( diesJahr, dieser Monat, null Tage)
Ist ein bisschen um die Ecke formuliert, aber um Access auszutricksen reicht es.
Angezeigter Wert in dem von dir gewünschten Format "dd.hh:nn:ss" ist
10:00:30:00
Works as designed.
Grüße
Biber
Moin Hugi1987,
Du kannst es mathetisch hin- und herwenden wie du wilst - wenn du "nur" die Differenz deiner "Endzeit minus Startzeit" in der Hand hast, dann sind es insgesamt 0 Jahre, 0 Monate, 0 Tage und ein büschen Kroppzeug seit Beginn von Access' Stund Null. Also bekämst du ohne die Korrektur oben wieder den 30.12.1899 00h30 angezeigt... bzw, den Tag 30.
Du kannst natürlich auch, wenn du dein Access schonen möchtest, auch selbst aus 1800 und geteilt durch 60 und Modulo 60 umrechnen in Stunden und Minuten.
Dann musst du eben Stunden, Minuten und Sekunden selbst berechnen, als jeweils zweistelligen String formatieren mit Anzeige eventueller führenden Nullen.
Aber wenn du doch die Sekundendifferenz schon als 1800 in der Hand hast, dann kannst du doch diese einzige Veränderliche in der Miniformel einfach reinfallen lassen... so what?
Musst du noch ein wenig auf die Spezialisten warten.
Biber
Zitat von @Hugi1987:
Danke für die Hilfe, aber ich tu mich leider nochetwas schwer mit der Umsetzung :-P
Ich habe gerade gerade entdeckt, dass sich die gebuchten Zeiten, z.B. 1800, auf Basis von zwei Zeiten errechnen lässt.
Startzeit: 31.05.2011 11:36:38
Endzeit: 31.05.2011 12:06:38
=Zeitbuchung 1800 (30Minuten)
Danke für die Hilfe, aber ich tu mich leider nochetwas schwer mit der Umsetzung :-P
Ich habe gerade gerade entdeckt, dass sich die gebuchten Zeiten, z.B. 1800, auf Basis von zwei Zeiten errechnen lässt.
Startzeit: 31.05.2011 11:36:38
Endzeit: 31.05.2011 12:06:38
=Zeitbuchung 1800 (30Minuten)
Du kannst es mathetisch hin- und herwenden wie du wilst - wenn du "nur" die Differenz deiner "Endzeit minus Startzeit" in der Hand hast, dann sind es insgesamt 0 Jahre, 0 Monate, 0 Tage und ein büschen Kroppzeug seit Beginn von Access' Stund Null. Also bekämst du ohne die Korrektur oben wieder den 30.12.1899 00h30 angezeigt... bzw, den Tag 30.
Du kannst natürlich auch, wenn du dein Access schonen möchtest, auch selbst aus 1800 und geteilt durch 60 und Modulo 60 umrechnen in Stunden und Minuten.
Dann musst du eben Stunden, Minuten und Sekunden selbst berechnen, als jeweils zweistelligen String formatieren mit Anzeige eventueller führenden Nullen.
Aber wenn du doch die Sekundendifferenz schon als 1800 in der Hand hast, dann kannst du doch diese einzige Veränderliche in der Miniformel einfach reinfallen lassen... so what?
Gibt es vielleicht eine einfachere Methode, mit der ich einfach mithilfe von zwei Datumwerten die Zeitdauer berechnen lassen kann?
Kann sein... bestimmt.... aber ich kenne sie nicht.Musst du noch ein wenig auf die Spezialisten warten.
Freundliche Grüße
Ebendiese zurückBiber