Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

rechnen mit Zeitwerten

Begonnen von Xoar, August 27, 2011, 21:29:58

⏪ vorheriges - nächstes ⏩

Xoar

Moin,

hab mal ne Frage und zwar arbeite ich einer Abfrage mit zwei Zeitangaben.

hab das Feld [von] und das Feld [bis] beide vom Datentyp Datum.

so das Problem besteht im folgendem:
es gibt keine 24:00 sondern nur 00:00, und wenn ich dann von 12:00 - 00:00 rechne, haut er mir -12Std raus, was ja falsch ist, sollte +12Std sein.
Hab das nun auf 23:59 gesetzt, dann klappt es richtig, nur hab ich dann statt +12Std, +11,9833...Std. Muss ich dann nachträglich wieder aufrunden.

Gibt es da nicht ne einfachere Methode?


Grüße

database

Hallo,

versuch mal in der Abfrage:

Dauer:  ZDate(Wenn([bis]<[von];[bis]+1-[von];[bis]-[von]))

sollte auch dann funktionieren wenn du 00:00 als Endzeit eingibst - und benötigt auch keine Rundung  ;D

HTH

ebs17

Der Datentyp Date beinhaltet Datums- und Zeitangaben. Wenn man die Datumsangabe nicht per Formatierung ausblendet, sondern einfach einbezieht, ergibt sich eine einfache Subtraktion, so wie man das erwartet:
' im Direktbereich
?#8/31/2011 0:00:00# - #8/30/2011 12:00:00#


Wenn man sich erschließt, dass ein Date-Wert intern eine Double-Zahl enthält, wobei die Ganzzahlen die Tage seit dem 30.12.1899 und die Dezimalzahlanteile Tagesbruchteile sind (1 Stunde = 1/24), ist der nachfolgende Ausdruck gleichwertig zum obigen:
?#8/31/2011 0:00:00# * 1 - #8/30/2011 12:00:00# * 1
Die Möglichkeit, per Multiplikation mit 1 aus einem Date-Wert eine Zahl zu erzeugen, unterstreicht den Zahlencharakter eines Date-Wertes.

Der Differenzwert aus obiger Berechnung von 0,5 entspricht einem halben Tag oder 12 Stunden, je nach dem, wie man es sehen will, übrigens auch völlig ohne Runden.

MfGA
ebs