neuestes datum ermitteln, SELECT "?"
hustieboy
- php
0 Sven Rautenberg0 AndreD0 hustieboy0 Thomas Luethi0 wahsaga
hi,
und zwar folgendes:
in meiner DB speichere ich das datum (einer useranmeldung) in der form : 3 11 03 (string),
nun möchte ich auf einer anderen seite den neuesten(!) eintrag anzeigen,
weiß nun nicht, ob's so ohneweiteres geht, da der spalten-typ nicht "date" ist.
muß ich irgendwo : strtotime() verwenden ? oder kann der (datums)-string auch anders als datum interpretiert werden?
oder wie ?
danke
hustieboy
Moin!
in meiner DB speichere ich das datum (einer useranmeldung) in der form : 3 11 03 (string),
Das ist schlecht.
nun möchte ich auf einer anderen seite den neuesten(!) eintrag anzeigen,
weiß nun nicht, ob's so ohneweiteres geht, da der spalten-typ nicht "date" ist.
Würdest du DATE als Spaltentyp verwenden, würde die Datenbank automatisch wissen, wie sie die gespeicherten Daten zu sortieren hat. Deinen String kann man jedenfalls nicht nach Datum sortieren, dazu ist er mangelhaft formatiert.
muß ich irgendwo : strtotime() verwenden ? oder kann der (datums)-string auch anders als datum interpretiert werden?
Das ist alles unnötige Zusatzarbeit, die du der Datenbank aufhalst. Verwendet DATE als Spaltentyp, und alles wird gut.
- Sven Rautenberg
und alles wird gut<<
lol, ok guy's, habt mich überzeugt (date), thanks :-)
hustie
Hello,
in meiner DB speichere ich das datum (einer useranmeldung) in der form : 3 11 03 (string),
nun möchte ich auf einer anderen seite den neuesten(!) eintrag anzeigen,
weiß nun nicht, ob's so ohneweiteres geht, da der spalten-typ nicht "date" ist.
muß ich irgendwo : strtotime() verwenden ? oder kann der (datums)-string auch anders als datum interpretiert werden?
Meiner Meinung nach machst Du Dir es unnötig schwer. Warum nimmst Du für das Datum nicht den Spaltentyp date oder auch timestamp. Mit date als Spalte kannst Du schon in der SQL-Query diverse Datumsberechnungen machen die sich auch recht komfortabel schreiben lassen, siehe http://www.mysql.com/doc/en/Date_calculations.html. Wenn Du Dein datum in PHP (oder was auch immer) in einen timestamp umwandelst und speicherst klappt das dann auch recht gut.
Zumindest solltest Du aber - wenn Du schon Dein Spaltentyp als String lassen möchtest - die Notation IMHO anstatt als 3 11 03 in 2003-11-03, also in das englische Format ändern. Das hat den Vorteil das Du mit Hilfe der auf- und absteigenden Sortierung Deine Datensätze nach Datum sortieren kannst...
Gruss AndreD
hi again,
ok ich hab nun die spalte in typ "date" geändert,
das datum wird mit : INSERT INTO (date) VALUE(now());
eingetragen.
die ausgabe will ich nun aber formatiert haben: dd-mm-yy.
$date = date("d-m-Y", $ergeb[6]);
..hab ich probiert
formatiert zwar, gibt aber 01-01-1970 aus...
jemand eine idee ?
danke
hustieboy
Hallo,
ok ich hab nun die spalte in typ "date" geändert,
Brav, brav!
Im Ernst: Das ist das einzig vernuenftige.
das datum wird mit : INSERT INTO (date) VALUE(now());
eingetragen.
die ausgabe will ich nun aber formatiert haben: dd-mm-yy.
$date = date("d-m-Y", $ergeb[6]);
Du versuchst offenbar, mit PHP zu formatieren.
date() erwartet aber als zweiten Parameter
einen Unix-Timestamp, und Du fuetterst
ihm irgend etwas anderes, das er als Null
betrachtet, und somit gibt es den Nullpunkt
der Unix-Timestamp-Zaehlung, naemlich den 1.1.1970...
Du koenntest MySQL bereits einen Unix-Timestamp
zurueckgeben lassen, dann ist es in PHP nur
noch ein Schritt.
SELECT UNIX_TIMESTAMP(datum) FROM Tabelle WHERE ...
oder so.
Noch eleganter waere es allerdings, gleich
alles durch MySQL durchfuehren zu lassen,
und zwar mit der Funktion
DATE_FORMAT()
Lies mal das da durch:
http://www.mysql.com/doc/de/Date_and_time_functions.html
HTH, Gruesse,
Thomas
hi,
ok ich hab nun die spalte in typ "date" geändert,
das datum wird mit : INSERT INTO (date) VALUE(now());
eingetragen.
gute entscheidung.
die ausgabe will ich nun aber formatiert haben: dd-mm-yy.
das kann die datenbank bereits für dich machen, bevor die daten überhaupt bei PHP ankommen (wir reden von mysql, oder?) - http://www.mysql.com/doc/de/Date_and_time_functions.html
$date = date("d-m-Y", $ergeb[6]);
..hab ich probiertformatiert zwar, gibt aber 01-01-1970 aus...
das kann nicht gehen - PHP erwartet als parameter für date() einen UNIX-Timestamp - der DATE-typ von mysql hat aber ein vollkommen anderes format (und auch TIMESTAMP von mysql ist _kein_ UNIX-Timestamp!)
aber auch die konvertierung eines datumstyps in einen UNIX-timestamp kann bereits die datenbank für dich machen, mit der funktion
UNIX_TIMESTAMP()
(erklärung siehe obiger link)
also, entweder bereits in der query das datum entsprechend formatiert selektieren (DATE_FORMAT(), erklärung ebenfalls unter obigem link), oder aber als UNIX-timestamp umformatieren lassen, und diesen dann mit PHP und date() formatiert ausgeben lassen.
gruss,
wahsaga