Zeitspanne in SQL abspeichern - welcher Datentyp?

  • Antworten:2
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 6

10.03.2016, 13:23:36 via Website

Hallo zusammen,

ich erstelle ein Formular zur Eingabe von Arbeitszeiten.
Es sollen 2 Varianten zur Eingabe angeboten werden.

Variante 1 (detailliert):
Kommen / Gehen / Pause // Gesamtstunden

Sollte dann wohl so aussehen (bitte korrigiert mich! :-) )

TimeStamp (gehen) minus TimeStamp(kommen) minus TimeStamp (Pause) = Gesamtstunden

In der zweiten Variante nur die Gesamtstunden, da bei nur einem Ereignis an dem Tag keine Angabe der Zeiten nötig ist
und ich die Eingabe im Sinne der Benutzerfreundlichkeit verkürzen will.

Welcher Datentyp eignet sich denn am Besten für die Gesamtstunden?
Da ich bei dem TimeStamp ohnehin mit Long rumhantiere, gehe ich mal davon aus...
Timespan hab ich ja vergeblich gesucht :-(

Hat jemand einen Tip für mich und ist meine Überlegung mit dem Berechnen der Zeitspanne so richtig?

Danke im Voraus und viele Grüße
Oliver

Antworten
  • Forum-Beiträge: 6

10.03.2016, 13:35:47 via Website

Timestamp Pause passt natürlich auch nicht :-(
von-bis-Eingabe der Pause finde ich auch unnötig lang.
Da mach ich ein Spinner mit vordefinierten Werten...

TimeStamp (gehen) minus TimeStamp(kommen) minus Zeitwert (Pause) = Gesamtstunden

d.h. dann wohl Pause und Gesamtstunden in Long? Oder wie?

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.164

10.03.2016, 14:40:14 via Website

Das kommt darauf an, wie du Arbeitest und mit welcher DB.
Denn in MySQL o.ä. gibt es auch DateTime etc.
Aber long macht da sinn wenn du das ganze als Timestamp angibst.
Bei der Pause Zeit ist das ähnlich. Du musst halt nur wissen, wie du die Zahl interpretieren musst.
Theoretisch kannst du das auf 2 wege angehen:

  1. Du nimmst ein Timestamp mit dem Datum 1.1.1970 hh:mm
    Bei diesem ist das Interpetierte Datum egal, dich interssiert ja nur die Zeit, diese kannst du da reincodeieren.
    So würde ich das machen, denn es ist ein definierter Standard. ( Bis auf dass du eine Zeitspanne angibst, dass musst du als Tabellenersteller halt wissen)

  2. Du nummst ein Feld vom Typ int und sagst es muss immer 4 Stellig sein.
    Dann hast du die ersten beiden stellen für die Surnden und die letzen beiden für die Minuten.
    Das ist aber nicht die optimale Lösung

Ich würde wie gesangt long nehmen, es als Datum interpetieren und dann nur die Eigenschaften der Uhrzeit bzw dann deine Dauer auswerten.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten

Empfohlene Artikel