none
Formatierung von Zeitdauern (z.B. 35:20 h) in Access-Abfragen

    Frage

  • Hallo zusammen,

    wie kann ich in Access Zeitdauern in Abfragen formatieren, also z.B. eine Zeitdauer von 35 Stunden und 20 Minuten in der Form "35:20"? In Excel gibt es dafür ein Zahlenformat ([h]:mm), in Access funktioniert dies leider nicht. Gibt es ein analoges Zahlenformat in Access?

    Dienstag, 9. August 2016 11:50

Alle Antworten

  • Wie hast Du die Dauer gespeichert? Wenn ich einmal annehme, dass es eine Integer Zahl ist in Minuten, dann kannst etwa diesen Ausdruck in der Abfrage verwenden:

       ([Dauer]\60) & ":" & Left("0" & ([Dauer] Mod 60);2)

    Matthias Kläy, Kläy Computing AG

    Dienstag, 9. August 2016 14:47
  • Nein, die Zeit ist als Datum/Uhrzeit gespeichert (Tag als ganze Zahl, Uhrzeit als reelle Zahl zwischen 0 und 1). Die "35:20" sind also als reelle Zahl 1,4722222...

    Hintergrund ist: Ich habe verschiedene Projektzeiten (Start und Ende jeweils als Datum/Uhrzeit) in einer Tabelle und will mittels Abfrage die Gesamtzeit über das Projekt ermitteln. Das klappt auch, nur wird mir die Summe nur reell angezeigt (1,4722). Stelle ich das Format um auf "hh:nn", ergibt das "11:20", d.h. der ganze Teil (1) wird ignoriert, weil Access davon ausgeht, dass die Zahl eine Datumsangabe mit Uhrzeit ist, aber keine ZeitDAUER.

    Dienstag, 9. August 2016 15:18
  • In diesem Fall

        ((1440*[Dauer])\60) & ":" & Right("0" & ((1440*[Dauer]) Mod 60);2)

    (Oben habe ich fälschlicherweise Left statt Right verwendet.)

    Die Fälle Dauer ist NULL und Dauert ist 0 müsste man auch noch einbauen...

    Matthias Kläy, Kläy Computing AG


    • Bearbeitet mklaey Dienstag, 9. August 2016 15:49 Ergänzung
    Dienstag, 9. August 2016 15:37
  • Hallo!

    Ich erweiterte die Format-Vorgabe der Format-Funktion um die Syntax, wie sie auch in Excel verwendet wird.

    [hh]:nn:ss statt hh:nn:ss => die [ ] bedeutet mehr als 24 Stunden zulassen.

    Beispielcode: Format-Methode der Klasse StringTools.

    => VBA: StringTools.Format([Dauer], "[hh]:nn")

    Für die Verwendung in einer Abfrage / als Ausruck müsste die Methode in einem Standardmodul gekapselt werden.

    mfg
    Josef


    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    Virtueller Access-Stammtisch






    Dienstag, 9. August 2016 21:59