Tom: Zeit ausrechnen

Beitrag lesen

Hello,

Hello,

willst Du die Datenbank rechnen lassen?
ist mir eig egal.

Welche hast Du im Einsatz?
mysql

Die Datenbank hat bei timediff() einen Bug gehabt. Ich weiß nicht, ob der schon beseitigt ist.

Aber mit datediff() kannst Du die Anzahl der Tage ermitteln, die vergangen sind und mit time_to_sec() kannst Du die Sekunden des Zeitanteils des (angebrochenen) aktuellen Tages ermitteln.
Das geht natürlich auch für die untere Schranke, also das Einstelldatum.

Wie man Tage in Wochen umrechnet, weißt Du sicherlich

Als Zwischenschritt ergeben sich die Sekunden seit Erstellung als

set @seconds := datediff(now(), createdate) * 86400 - time_to_sec(createdate) + time_to_sec(now());

oder als Select:

select datediff(now(), createdate) * 86400 - time_to_sec(createdate) + time_to_sec(now()) seconds from messagetable where id = 1234;

Voraussetzung ist, es hat zwischendurch keine Zeitumstellung stattgefunden.
Wie genau musst Du das haben?

Mit floor(), der Division und % (Modulo) und ein paar Uservariablen kannst Du Dir die Rechnung nun als Kettenrechnung aufbauen.

Du kannst Dir die Abfrage soweit in der Datenbank ausformulieren, dass nachher der gewünschte Text herauskommt.

Alternativ kannst Du dir natürlich auch die Sekunden zurückgeben lassen und die Rechnung in PHP auf ähnliche Weise durchführen. Das hätte dann den Vorteil, dass der Controller die Arbeit der Umrechnung übernimmt und die Datenbank entlastet ist. Außerdem stehen Dir dadurch auch die Ergebnisse in PHP zur Verfügung. Das ginge zwar auch mit der Datenbanklösung, ergäbe aber ein sehr komplexes Query mit vielen Funktionsaufrufen.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de