412 Stimmen

PHP date()-Format beim Einfügen in datetime in MySQL

Welches ist das richtige Format für die Übergabe an die date() Funktion in PHP, wenn ich das Ergebnis in eine MySQL-Datei einfügen möchte datetime Typ-Spalte?

Ich habe versucht date('Y-M-D G:i:s') aber das fügt jedes Mal nur "0000-00-00 00:00:00" ein.

5voto

Bruno Punkte 439

Ein kleiner Nachtrag zur akzeptierten Antwort: Wenn die Datenbank datetime als UTC gespeichert ist (was ich immer mache), sollten Sie gmdate('Y-m-d H:i:s') anstelle von date("Y-m-d H:i:s") .

Oder, wenn Sie es vorziehen, alles von MySQL erledigen zu lassen, wie es einige Antworten vorschlagen, würde ich MySQLs UTC_TIMESTAMP mit demselben Ergebnis.

Anmerkung: Ich habe die Frage so verstanden, dass sie sich auf die aktuelle Zeit bezieht.

3voto

Maurici Abad Punkte 648

Dies ist eine genauere Vorgehensweise. Sie setzt die Dezimalstellen hinter die Sekunden und ist damit präziser.

$now = date('Y-m-d\TH:i:s.uP', time());

Beachten Sie die .uP .

Mehr Informationen: https://stackoverflow.com/a/6153162/8662476

1voto

Brian Jones Punkte 79

Die Suche nach einer einfachen Antwort hat mich in den Wahnsinn getrieben. Schließlich habe ich diese Funktion erstellt, die anscheinend alle Eingaben abfängt und einen guten SQL-String liefert, der korrekt oder zumindest gültig und überprüfbar ist. Wenn es 1999-12-31 ist, ist es wahrscheinlich falsch, aber es wird keinen schlimmen Fehler in MySQL auslösen.

function MakeSQLDate($date) {
    if (is_null($date)) {
        //use 1999-12-31 as a valid date or as an alert
        return date('Y-m-d', strtotime('1999-12-31'));
    }

    if (($t = strtotime($date)) === false) {
        //use 1999-12-31 as a valid date or as an alert
        return date('Y-m-d', strtotime('1999-12-31'));
    } else {
        return date('Y-m-d H:i:s', strtotime($date));
    }
}

0voto

carlo-849978 Punkte 13

IMO zusätzlich zu den date() Wenn Sie die in den vorangegangenen Antworten genannten Funktionsoptionen verwenden, sollten Sie sorgfältig prüfen, ob die Zeitzoneneinstellung des Servers sich von der der Datenbank unterscheidet. Wenn die UTC-Zeitzone benötigt wird, muss die gmdate() Funktion (sie hat die gleichen Optionen wie die date() ) ist für den jeweiligen Fall besser geeignet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X