Hallo alle, ich mal wieder,
Ich habe häufig das Problem, dass ich wissen muss, wieviele Sekunden ein bestimmtes Event her ist. Dazu lege ich also pro Event einen Datensatz an, der mit NOW() aktuelles Datum+Uhrzeit speichert. Nun frage ich mich, was dafür eigentlich die beste Variante ist, die vergangene Zeit in Sekunden zu bestimmen.
Eigentlicht sieht die Variante ja ganz gut aus:
... die erfodert aber MySQL5 und ich habe zum Teil nur auf MySQL 4.1 Zugriff. Eine Variante die in MySQL4 geht wäre die:
... nur weiß ich nicht wie flott das ist mit den zwei Funktionen die das braucht.
Eventuell wäre das rechnen mit TIMESTAMPs ja schneller. Die brauchen auch nur 32 Bit. Allerdings liefert MySQL selbst einen TIMESTAMP-Datentyp seit MySQL 4.1 auch formatiert wie ein Datum zurück, so dass man auch hier nochmal umwandeln müsste. Was geht ist:
Subtraktion der 32Bit-Ints dürfte schnell sein, aber 2x UNIX_TIMESTAMP()? Außerdem ist die Variante natürlich nicht Year-2038-safe. Aber ob ich mir darüber wirklich Gedanken machen muss?
Was würdet ihr empfehlen?
Ich habe häufig das Problem, dass ich wissen muss, wieviele Sekunden ein bestimmtes Event her ist. Dazu lege ich also pro Event einen Datensatz an, der mit NOW() aktuelles Datum+Uhrzeit speichert. Nun frage ich mich, was dafür eigentlich die beste Variante ist, die vergangene Zeit in Sekunden zu bestimmen.
Eigentlicht sieht die Variante ja ganz gut aus:
Code:
SELECT TIMESTAMPDIFF(SECOND,`when`,NOW()) FROM <table>;
... die erfodert aber MySQL5 und ich habe zum Teil nur auf MySQL 4.1 Zugriff. Eine Variante die in MySQL4 geht wäre die:
Code:
SELECT TIME_TO_SEC(TIMEDIFF(NOW(), `when`)) FROM <table>;
... nur weiß ich nicht wie flott das ist mit den zwei Funktionen die das braucht.
Eventuell wäre das rechnen mit TIMESTAMPs ja schneller. Die brauchen auch nur 32 Bit. Allerdings liefert MySQL selbst einen TIMESTAMP-Datentyp seit MySQL 4.1 auch formatiert wie ein Datum zurück, so dass man auch hier nochmal umwandeln müsste. Was geht ist:
Code:
SELECT UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(`when`) FROM <table>;
Subtraktion der 32Bit-Ints dürfte schnell sein, aber 2x UNIX_TIMESTAMP()? Außerdem ist die Variante natürlich nicht Year-2038-safe. Aber ob ich mir darüber wirklich Gedanken machen muss?
Was würdet ihr empfehlen?