SQL Datetime
AndreasN
- perl
Hallöchen ...
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
Oder gibts es eine auto_increment funktion von mySQL, so dass die Datenbank selbständig die Zeit nimmt, sobald ein eintrag gemacht wird ?`
Vielen Dank schon im voraus
Gruss
Andreas
Hi :-)
in mysql wäre es die funktion now() .. versuch doch mal, ob das in sql auch geht
Steffi
Super Danke das ist genau das was ich gebraucht habe :-))
1000 Dank
Lieben Gruss
Andreas
Hm dummerweise brauch ich dafür die Anweisung mit Perl Befehlen ( und dem Modul DBI )
Den Befehl 'now' ansich hab ich schon gefunden , allerdings nicht als Perl Befehl :-(
Hoffe es kann mir noch jemand weiterhelfen
Gruss
Andreas
hallo!
Hm dummerweise brauch ich dafür die Anweisung mit Perl Befehlen ( und dem Modul DBI )
warum? Kannst Du in Perl nicht die Abfrage als kompletten string an die Datenbank schicken?
Also nur mal so in PHP kannst Du das mit
mysql_query("INSERT INTO tabelle SET Datum = NOW()");
// genauso geht das mit
$query = "INSERT INTO tabelle SET Datum = NOW()";
mysql_query($query);
NOW() ist ja eine MYSQL Funktion, daher sollte das nichts mit PERL zu tun haben!
Den Befehl 'now' ansich hab ich schon gefunden , allerdings nicht als Perl Befehl :-(
Wenn das so aus welchen Gründen auch immer nicht funktionieren sollte, könntest Du das komplett von der Datenbank erledigen lassen:
benutze das Spalten-Format TIMESTAMP anstatt DATETIME. Dadurch wird das Dateum bei inserts und bei jedem update automatisch aktualisiert, nur liegt das Datum dann wie folgt vor:
YYYYMMDDHHMMSS
Aber das kann man schon bei der Select-Abrage umwandeln, oder erst später mit PERL.
hier steht das alles: http://de.mysql.com/documentation/mysql/bychapter/manual.de_Reference.html#DATETIME
Grüße
Andreas
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