Datum mit time()

Hallo,

ich beobachte gerade ein "Phänomen", welches ich nicht ganz zuordnen kann.

Für eine DB-Speicheraktion hinterlege ich das Datum mit in der DB,
welches ich vorher mit

$time = date("Y-m-d H:m:s",time());

in die Variable $time ablege.

Ich war immer davon ausgegangen, das time() den aktuellen Zeitpunkt
bestimmt.

Beim ersten Mal ist alles in Ordnung, der Datensatz wird in die Tabelle
geschrieben, mit dem oben festgelegten Zeitstempel.

Wenn ich die Funktion nochmal ausführe und eine zweite DB-Zeile
Speichern möchte, wird ebenfalls wieder mit

$time = date("Y-m-d H:m:s",time());

ein Zeitstempel festgelegt - der ist aber ca. 20 - 30 Sekunden
"vor" dem alten Zeitpunkt - das heisst, ein neuer DB-Eintrag wird
mit einem älteren Zeitstempel gespeichert und das obwohl bei beiden
Aktionen die aktuelle Zeit von time() abgenommen wird.

Weiss jemand Rat?

Danke

Günter
guenter.baier [ So, 18 November 2007 15:12 ] [ ID #1873689 ]

Re: Datum mit time()

Günter Baier schrieb:
> Hallo,
>
> ich beobachte gerade ein "Phänomen", welches ich nicht ganz zuordnen =
kann.
>
> Für eine DB-Speicheraktion hinterlege ich das Datum mit in der DB,
> welches ich vorher mit
>
> $time =3D date("Y-m-d H:m:s",time());
------------------------^

Sollte das nicht wenn ueberhaupt ein 'i' sein?


> in die Variable $time ablege.
>
> Ich war immer davon ausgegangen, das time() den aktuellen Zeitpunkt
> bestimmt.
>
> Beim ersten Mal ist alles in Ordnung, der Datensatz wird in die Tabelle=

> geschrieben, mit dem oben festgelegten Zeitstempel.
>
> Wenn ich die Funktion nochmal ausführe und eine zweite DB-Zeile
> Speichern möchte, wird ebenfalls wieder mit
>
> $time =3D date("Y-m-d H:m:s",time());
------------------------^


> ein Zeitstempel festgelegt - der ist aber ca. 20 - 30 Sekunden
> "vor" dem alten Zeitpunkt - das heisst, ein neuer DB-Eintrag wird
> mit einem älteren Zeitstempel gespeichert und das obwohl bei beiden
> Aktionen die aktuelle Zeit von time() abgenommen wird.

Du hast nicht gesagt was fuer eine DB du hast. MySQL, wie auch andere,
haben spezielle Spaltentypen und in abhaengig vom Typ auch ein
Sonderverhalten.

Die erste Spalte vom Typ "timestamp" erhaelt automatisch einen Timestamp =

wenn der Datensatz erstellt bzw. geaendert wird.

Dazu kommen dann noch Funktionen welche per SQL die akt. Zeit auf dem DB =

Server ermitteln und diese als Masstab benutzen

$sql =3D "UPDATE table SET foo =3D 'bar', last_modify =3D NOW() WHERE id =
=3D 123"

In diesem Fall ist es NOW(). MySQL passt denn Wert dann entsprechend an
so das er die Date, Datetime, Timestamp spalte passt.

Gruss
Joerg

--
TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
HRB Wuerzburg 6940 http://www.takenet.de
Joerg Behrens [ So, 18 November 2007 15:21 ] [ ID #1873690 ]

Re: Datum mit time()

Joerg Behrens wrote:
> Günter Baier schrieb:
>
>> Hallo,
>>
>> ich beobachte gerade ein "Phänomen", welches ich nicht ganz zuordnen
>> kann.
>>
>> Für eine DB-Speicheraktion hinterlege ich das Datum mit in der DB,
>> welches ich vorher mit
>>
>> $time = date("Y-m-d H:m:s",time());
>
> ------------------------^
>

Stimmt, das sollte ein i sein ... war das tippen wieder mal schneller,
als alles andere. Höchstpeinlich.

Danke

G.
guenter.baier [ So, 18 November 2007 16:00 ] [ ID #1873691 ]

Re: Datum mit time()

Ad 2007-11-18, Günter Baier <guenter.baier [at] googlemail.com> dixit:

> $time = date("Y-m-d H:m:s",time());
^

Das m!=i war ja bereits anderweitig geklaert.

Hat die DB keine NOW()-Funktion? Hier auf mySQL erledige ich das
immer mit

INSERT INTO ...
(zeitstempel, ...)
VALUES
(
NOW(),
...
)"

Wozu das Skript belasten, womit die Datenbank schon dient?

Grusz,

Peter Blancke

--
Hoc est enim verbum meum!
Peter Blancke [ So, 18 November 2007 19:21 ] [ ID #1873695 ]

Re: Datum mit time()

Günter Baier schrieb:

> ich beobachte gerade ein "Phänomen", welches ich nicht ganz zuordnen =
kann.
>
> Für eine DB-Speicheraktion hinterlege ich das Datum mit in der DB,
> welches ich vorher mit
>
> $time =3D date("Y-m-d H:m:s",time());
^
Nimm ein 'i', und alles sollte gut sein.

Dein Ausdruck liefert heute zB. 2007-11-18 21:11:45, dreißig Sekunden
später dann 2007-11-18 21:11:15, was dem von dir beschriebenen Effekt
entspricht.

MfG
Niels

--
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Niels Braczek [ So, 18 November 2007 21:46 ] [ ID #1873700 ]
PHP » de.comp.lang.php.misc » Datum mit time()

Vorheriges Thema: mehrere AJAX Requests
Nächstes Thema: HTML_QuickForm: Probleme mit autocomplete-Feldern