Klaus Mock: SQL Datetime

Beitrag lesen

Hallo,

Ich hab da mal ein kleines Problemchen:

Wie bekomme ich am einfachsten die Zeit in dem Format, wie es die mySQL Datenbank haben möchte ? DATETIME: Also JJJJ-MM-TT Std:min:sec

Wenn Du in Perl mit einem Wert arbeitest, wie Du ihn von time() bekommst (also Sekunden seit 'the epoch'), dann kannst Du mit gmtime() bzw. localtime() von dem time-Wert in die einzelnen Zeitwerte ermitteln.
Wenn du dann noch die Funktion sprintf() für die Formatierung verwendest, dann sollte das kein Problem sein.
Beachte, daß gmtime() und localtime() das Monat mit 0 (=Jänner) zu zählen beginnt und außerdem die Jahre seit 1900 als Jahreswert angegeben wird.

Näheres findest Du in der Dokumenattion der genannten Befehle.

Wenn Du allerdings nur die aktuelle Zeit (inkl. Datum) in der Datenbank abspeichern willst, dann kannst Du in das Insert- bzw. Updatestatement die DB-Funktion now() verwenden, wie es Dir schon empfohlen wurde. Das ist m.E. sogar die bessere Lösung, vor allem wenn die Datenbank nicht auf dem gleichen Rechner wie das Perlscript läuft. Dann hast Du es nur mit einer Zeitreferenz zu tun, nämlich die des DB-Rechners.

AFAIK gibt es bei mySQL auch irgendeinen Mechanismus, wonach das erste Datums-Feld mit der aktuellen Uhrzeit initialisiert wird, wenn der Datensatz angelegt wird, und dieses Feld nicht im Statement gesetzt wird.

Grüße
  Klaus