frage zu datum rechnen

frage zu datum rechnen

am 13.04.2005 21:55:17 von Peter Leibling

hallo,

habe schon quer über google und hier gesucht. leider jedoch nichts passendes
gefunden.

ich versuche mal mein problem zu schildern.

wenn benutzer sich an einem server anmelden wird dies protokolliert und
landet in eine mysql datenbank. der eintrag ist wie folgt:

username servername clientname 07.04.05 13:20

der vorletzte wert ist das datum und wird in einen textfeld in der datenbnak
abgelegt. nun möchte ich gerne eine auswertung machen, die mir alle
anmeldungen anzeigt vom 01.04.05 bis zum 10.04.05. leider weiß ich nicht
genau wie das funktionieren soll.

muß ich erst das datum in timestamp umrechnen, in die datenbank eintragen
und immer mit den timestamp daten arbeiten (also auch jedesmal hin- und
herkonvertieren)? oder geht das einfacher? wie geht das, kommt timestamp mit
den zahlen 07.04.05 zurecht? oder gibt es schon hier einen ähnlichen thread,
den ich noch nicht gefunden habe?

vielen dank für eure hilfe ...

mfg pet

Re: frage zu datum rechnen

am 13.04.2005 22:47:41 von Marcel Hellkamp

Peter Leibling wrote:
> wenn benutzer sich an einem server anmelden wird dies protokolliert und
> landet in eine mysql datenbank. der eintrag ist wie folgt:
>
> username servername clientname 07.04.05 13:20
>
> der vorletzte wert ist das datum und wird in einen textfeld in der datenbnak
> abgelegt. nun möchte ich gerne eine auswertung machen, die mir alle
> anmeldungen anzeigt vom 01.04.05 bis zum 10.04.05. leider weiß ich nicht
> genau wie das funktionieren soll.

Du möchtest den Unix Timestamp in ein Int unsigned Feld speichern und
dir damit eine megne Arbeit ersparen.

Re: frage zu datum rechnen

am 13.04.2005 22:52:30 von Peter Leibling

> Du möchtest den Unix Timestamp in ein Int unsigned Feld speichern und dir
> damit eine megne Arbeit ersparen.

sorry, kenn mich noch nicht so gut aus mit php/mysql - deine aussage sagt
mir leider nichts. könntest du mir ein wenig deutlicher auf die sprünge
hlefen?

danke für deine/eure hilfe ...

mfg pet

Re: frage zu datum rechnen

am 13.04.2005 22:58:44 von Niels Braczek

Marcel Hellkamp schrieb:
>
> Du möchtest den Unix Timestamp in ein Int unsigned Feld speichern und
> dir damit eine megne Arbeit ersparen.

Man möchte ISO-Daten in einem DATETIME-Feld speichern und keine
Timestamps in einem INTEGER-Feld.

MfG
Niels

Re: frage zu datum rechnen

am 13.04.2005 23:00:34 von Marcel Hellkamp

Niels Braczek wrote:
> Marcel Hellkamp schrieb:
>> Du möchtest den Unix Timestamp in ein Int unsigned Feld speichern und
>> dir damit eine megne Arbeit ersparen.
>
> Man möchte ISO-Daten in einem DATETIME-Feld speichern und keine
> Timestamps in einem INTEGER-Feld.

In anbetracht der Tatsache, das MySQL 4.0.x noch kaum eine der wirklich
interessanten Datumsfunktionen unterstützt, ziehe ich besonders in
MySQL/PHP Umgebungen üblicherweise Timestamps vor.

Re: frage zu datum rechnen

am 13.04.2005 23:03:10 von Marcel Hellkamp

Peter Leibling wrote:
>>Du möchtest den Unix Timestamp in ein Int unsigned Feld speichern und dir
>>damit eine megne Arbeit ersparen.

time() liefert dir in PHP den Unix Timestamp zurück (php.net hilft,
google auch). Damit kann man deutlich schöner Rechnen als mit echten
Date-Feldern in MySQL (vor 4.1.x). Speichere einfach den Unix Timestamp,
den dir PHP liefert, in eine Spalte vom Typ Integer (unsignet, also
nicht vorzeichenbehaftet) und du kannst das von dir beschriebene Problem
viel einfacher lösen.

Re: frage zu datum rechnen

am 13.04.2005 23:17:05 von Niels Braczek

Marcel Hellkamp schrieb:
> Peter Leibling wrote:
>
>>> Du möchtest den Unix Timestamp in ein Int unsigned Feld speichern und
>>> dir damit eine megne Arbeit ersparen.
>
> time() liefert dir in PHP den Unix Timestamp zurück (php.net hilft,
> google auch). Damit kann man deutlich schöner Rechnen als mit echten
> Date-Feldern in MySQL (vor 4.1.x). Speichere einfach den Unix Timestamp,
> den dir PHP liefert, in eine Spalte vom Typ Integer (unsignet, also
> nicht vorzeichenbehaftet) und du kannst das von dir beschriebene Problem
> viel einfacher lösen.

Wie war noch der Timestamp vom Ende des 2. Weltkriegs?`
Man will keine Timestamps speichern. ISO-Daten können alles, was
Timestamps können und sind nicht im Wertebereich beschränkt.

MfG
Niels

Re: frage zu datum rechnen

am 13.04.2005 23:19:46 von Niels Braczek

Marcel Hellkamp schrieb:
> Niels Braczek wrote:
>> Marcel Hellkamp schrieb:
>>
>>> Du möchtest den Unix Timestamp in ein Int unsigned Feld speichern und
>>> dir damit eine megne Arbeit ersparen.
>>
>> Man möchte ISO-Daten in einem DATETIME-Feld speichern und keine
>> Timestamps in einem INTEGER-Feld.
>
> In anbetracht der Tatsache, das MySQL 4.0.x noch kaum eine der wirklich
> interessanten Datumsfunktionen unterstützt, ziehe ich besonders in
> MySQL/PHP Umgebungen üblicherweise Timestamps vor.

Was kannst du denn mit Timestamps tun, was nicht auch mit ISO-Daten
geht? Wie drückst du den Geburtstag eines Menschen aus, der älter als 35
ist? Selbst MySQL 3.x hat eine für übliche Zwecke hinreichende
Unterstützung von ISO-Daten.

MfG
Niels

Re: frage zu datum rechnen

am 14.04.2005 09:57:30 von Marcel Hellkamp

Niels Braczek wrote:
> Marcel Hellkamp schrieb:
>
>> Niels Braczek wrote:
>>
>>> Marcel Hellkamp schrieb:
>>>
>>>> Du möchtest den Unix Timestamp in ein Int unsigned Feld speichern
>>>> und dir damit eine megne Arbeit ersparen.
>>>
>>> Man möchte ISO-Daten in einem DATETIME-Feld speichern und keine
>>> Timestamps in einem INTEGER-Feld.
>>
>> In anbetracht der Tatsache, das MySQL 4.0.x noch kaum eine der
>> wirklich interessanten Datumsfunktionen unterstützt, ziehe ich
>> besonders in MySQL/PHP Umgebungen üblicherweise Timestamps vor.
>
> Was kannst du denn mit Timestamps tun, was nicht auch mit ISO-Daten
> geht? Wie drückst du den Geburtstag eines Menschen aus, der älter als 35
> ist? Selbst MySQL 3.x hat eine für übliche Zwecke hinreichende
> Unterstützung von ISO-Daten.

"wenn benutzer sich an einem server anmelden wird dies protokolliert und
landet in eine mysql datenbank." Peter Liebling

Nenn mir einen Vorteil von Date-feldern, der bei dieser Problemstellung
zum tragen kommt. Nachteile kann ich dir nennen aber ich denke du kannst
selbst nachlesen, was alles erst ab 4.1.1 unterstützt wird.

Nur als Beispiel:
ADDTIME() was added in MySQL 4.1.1.
DATEDIFF() was added in MySQL 4.1.1.
SUBTIME() was added in MySQL 4.1.1.

Re: frage zu datum rechnen

am 14.04.2005 11:08:47 von Axel Schwenke

Marcel Hellkamp wrote:
> Niels Braczek wrote:

>> Was kannst du denn mit Timestamps tun, was nicht auch mit ISO-Daten
>> geht? Selbst MySQL 3.x hat eine für übliche Zwecke hinreichende
>> Unterstützung von ISO-Daten.
>
> "wenn benutzer sich an einem server anmelden wird dies protokolliert und
> landet in eine mysql datenbank." Peter Liebling
>
> Nenn mir einen Vorteil von Date-feldern, der bei dieser Problemstellung
> zum tragen kommt.

Menschenlesbare Queries:
SELECT ... WHERE last_login BETWEEN "2005-4-1" AND "2005-4-10"

> Nachteile kann ich dir nennen aber ich denke du kannst
> selbst nachlesen, was alles erst ab 4.1.1 unterstützt wird.
>
> Nur als Beispiel:
> ADDTIME() was added in MySQL 4.1.1.
> DATEDIFF() was added in MySQL 4.1.1.
> SUBTIME() was added in MySQL 4.1.1.

Wenn du mal deine Scheuklappen abnehmen würdest, dann würdest du
sehen, daß es all diese schönen Dinge schon in 3.23 gibt.
Nur teilweise unter anderem Namen. Und außerdem irrelevant für
die Frage des OP (Relevanz war BTW dein Argument oben).


XL

Re: frage zu datum rechnen

am 14.04.2005 14:49:00 von Niels Braczek

Marcel Hellkamp schrieb:
> Niels Braczek wrote:

> "wenn benutzer sich an einem server anmelden wird dies protokolliert und
> landet in eine mysql datenbank." Peter Liebling
>
> Nenn mir einen Vorteil von Date-feldern, der bei dieser Problemstellung
> zum tragen kommt. Nachteile kann ich dir nennen aber ich denke du kannst
> selbst nachlesen, was alles erst ab 4.1.1 unterstützt wird.

Du erinnerst dich an das Jahr-2000-Problem? Mit Timestamps hast du
dieses Problem in 2038 erneut. Mit ISO-Dates nicht. Für mich ist dieser
Grund mehr als hinreichend, auf Timestamps zu verzichten. Das
J2000-Problem entstand ja auch nur aus der irrigen Annahme heraus, 'die
Software wird eh nicht so lange im Einsatz sein'.

> Nur als Beispiel:
> ADDTIME() was added in MySQL 4.1.1.
> DATEDIFF() was added in MySQL 4.1.1.
> SUBTIME() was added in MySQL 4.1.1.

Diese Funktionen habe ich bisher nicht vermisst.

MfG
Niels