MySQL Datum speichern--sortieren
hawkmaster
- datenbank
0 ChrisB0 hawkmaster0 ChrisB0 hawkmaster0 ChrisB
0 Christoph Jeschke
Hallo zusammen,
in einer MySQL tabelle gibt es eine Spalte "file_date". hier wird ein Datei Datum gespeichert.
Die Spalte wurde ursprünglich als "varchar" angelegt. Das Datum wurde dann mit
$filedatetimetmp = strftime("%c");
gespeichert.
Jetzt steht es in der Form.
13.11.2008 19:01:58
in der tabelle.
Ich möchte nun alle Einträge nach dem Datum sortieren. Mit
"ORDER BY file_date DESC"
kommt man nicht weiter da das Datum nicht richtig erkannt wird.
Gibt es einen Lösung dafür oder wäre es sinnvoll die Spalte auf "DATETIME" umzustellen und dann in Zukunft alles mit Now() zu speichern?
vielen Dank und viele Grüße
hawk
Hi,
Gibt es einen Lösung dafür
Ja:
oder wäre es sinnvoll die Spalte auf "DATETIME" umzustellen
MfG ChrisB
Hallo ChrisB,
danke für deine Hilfe.
oder wäre es sinnvoll die Spalte auf "DATETIME" umzustellen
Du meinst also es wäre das Beste für die Zukunft, die Spalte als "DATETIME" Typ umzustellen? Ich denke auch das ich das dann mache. Allerdings werden mir dann meine alten Datumsformate die momentan ja in dem VARCHAR im Format
13.11.2008 19:01:58 vorliegen zunichte gemacht.
Aber für einen Neubeginn ist es wohl das Beste.
ich wollte nur nochmals sicher gehen, weil es im Netz so unterschiedliche Meinungen dazu gibt. Viele meinen ein INT Typ und das Datum dann mit timestamp erstellen.
vielen Dank und viele Grüße
hawk
Hi,
Du meinst also es wäre das Beste für die Zukunft, die Spalte als "DATETIME" Typ umzustellen? Ich denke auch das ich das dann mache. Allerdings werden mir dann meine alten Datumsformate die momentan ja in dem VARCHAR im Format
13.11.2008 19:01:58 vorliegen zunichte gemacht.
Na ja, die kannst du ja konvertieren.
Mit MySQL-Stringfunktionen auseinandernehmen, in einem MySQL als Datumsformat verstaendlichen Format wieder zusammensetzen, und in eine neue Spalte vom Typ DATETIME reinschreiben.
MfG ChrisB
Hallo ChrisB,
danke nochmals für den Tipp.
Ich muss nochmals was nachfragen:
Es geht ja darum Dateien die von Anwendern erstellt wurden mit Namen, Datum_Uhrzeit und ein paar anderen Sachen in einer Tabelle zu speichern.
Es geht um die Spalte "FileDate".
Ich habe jetzt auf den Typ "DATETIME" umgestellt.
Wenn ich es richtig verstanden habe, kann ich dann nur mit der MySQL Funktion NOW() das Datum einfügen?
function insert_files($filename,$file_path,$filesize,$filedatetimetmp){
global $DBO;
$dbInsertFiles = $DBO->prepare("INSERT INTO tb_files (FileName,FilePath,FileSize,FileDate) VALUES (:filename,:filepath,:filesize,NOW())");
$dbInsertFiles->bindParam(':filename', $filename);
$dbInsertFiles->bindParam(':filepath', $file_path);
$dbInsertFiles->bindParam(':filesize', $filesizetmp);
//$dbInsertFiles->bindParam(':filedate', $filedatetimetmp);
$dbInsertFiles->execute();
}
Es steht ja dann das aktuelle Datum mit Zeit in der Tabelle beim aktuellen INSERT.
Eigentlich möchte ich aber das ursprüngliche Erstelldatum der Datei speichern. Müsste ich dann mit PHP das Datei-Erstelldatum in das Format für DATETIME bringen.
Noch eine Kleinigkeit.
Das Datum wird mit NOW() so gespeichert:
2008-12-17 09:20:24
Man kann dies nicht gleich so formatieren das es im deutschen Datumsformat gespeichert wird?
Vermutlich hinterher beim auslesen bzw. anzeigen wieder zurückformatieren?
vielen Dank und viele Grüße
hawk
Hi,
Es steht ja dann das aktuelle Datum mit Zeit in der Tabelle beim aktuellen INSERT.
Eigentlich möchte ich aber das ursprüngliche Erstelldatum der Datei speichern. Müsste ich dann mit PHP das Datei-Erstelldatum in das Format für DATETIME bringen.
PHP liefert dir was Dateiaenderungszeitpunkte angeht einen Unix Timestamp, und MySQL stellt dir eine Funktion zur Verfuegung, diesen in ein MySQL-Datum zu konvertieren.
MfG ChrisB
Guten Tag,
Gibt es einen Lösung dafür oder wäre es sinnvoll die Spalte auf "DATETIME"
umzustellen und dann in Zukunft alles mit Now() zu speichern?
Du kannst ein TIMESTAMP-Feld verwenden, welches sich beim Anlegen des Datensatzes und beim Update automatisch aktualisiert (DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP).
Gruß
Christoph Jeschke