Was ist das richtige Format, um die date()
Funktion in PHP zu übergeben, wenn ich das Ergebnis in eine datetime
Spalte vom Typ MySQL einfügen möchte ?
Ich habe es versucht, date("Y-M-D G:i:s")
aber das fügt jedes Mal nur "0000-00-00 00:00:00" ein.
Antworten:
Das Problem ist, dass Sie verwenden
'M'
und'D'
MySQL als Textdarstellung eine numerische Darstellung des Formats erwartet2010-02-06 19:30:13
Versuchen Sie: Dies
date("Y-m-d H:i:s")
verwendet die numerischen Äquivalente.Bearbeiten: Umgeschaltet
G
aufH
, obwohl dies möglicherweise keine Auswirkungen hat, möchten Sie wahrscheinlich das 24-Stunden-Format mit führenden Nullen verwenden.quelle
Aus den Kommentaren der PHP-
date()
Handbuchseite :Sie hatten das 'Y' richtig - das ist ein volles Jahr, aber 'M' ist ein dreistelliger Monat, während 'm' ein zweistelliger Monat ist. Gleiches Problem mit 'D' anstelle von 'd'. 'G' ist eine 1- oder 2-stellige Stunde, wobei 'H' bei Bedarf immer eine führende 0 hat.
quelle
Hier ist eine alternative Lösung: Wenn Sie das Datum in PHP als Zeitstempel haben, umgehen Sie die Behandlung mit PHP und lassen Sie die DB mithilfe der
FROM_UNIXTIME
Funktion die Transformation übernehmen .quelle
Ich verwende den folgenden PHP-Code, um eine Variable zu erstellen, die ich in eine MySQL DATETIME-Spalte einfüge.
Hier werden das aktuelle Datum und die aktuelle Uhrzeit des Servers gespeichert.
quelle
quelle
Formatieren Sie den Zeitstempel in die MySQL DATETIME-Spalte:
quelle
Formatieren Sie MySQL datetime mit PHP
quelle
Ich benutze diese Funktion (PHP 7)
Ältere Versionen von PHP (PHP <7)
quelle
function getDateForDatabase(string $date) : string {
zufunction getDateForDatabase($date) {
Warum weiß die Typdeklarationen einen Fehler aus , ich PHP nicht genug zu erzählen.Es ist nicht erforderlich, die date () -Methode von PHP nicht zu verwenden, wenn Sie keinen Zeitstempel verwenden. Wenn
dateposted
es sich um eine Datums- / Uhrzeitspalte handelt, können Sie das aktuelle Datum folgendermaßen einfügen:quelle
Das hat mich verrückt gemacht, nach einer einfachen Antwort zu suchen. Schließlich habe ich diese Funktion erstellt, die alle Eingaben zu erfassen scheint und eine gute SQL-Zeichenfolge angibt, die korrekt oder zumindest gültig und überprüfbar ist. Wenn es der 31.12.1999 ist, ist es wahrscheinlich falsch, wirft aber keinen schlimmen Fehler in MySQL.
quelle
Verwenden der
DateTime
Klasse in PHP7 +:quelle
Ein kleiner Nachtrag zur akzeptierten Antwort: Wenn die Datenbank
datetime
als UTC gespeichert ist (was ich immer mache), sollten Siegmdate("Y-m-d H:i:s")
stattdessen verwendendate("Y-m-d H:i:s")
.Wenn Sie es vorziehen, MySQL alles erledigen zu lassen, wie einige Antworten vermuten lassen, würde ich MySQLs
UTC_TIMESTAMP
mit dem gleichen Ergebnis einfügen .Hinweis: Ich habe die Frage zur aktuellen Zeit verstanden.
quelle
Dies ist ein genauerer Weg, dies zu tun. Es setzt Dezimalstellen hinter die Sekunden und sorgt so für mehr Präzision.
Beachten Sie die
.uP
.Weitere Informationen: https://stackoverflow.com/a/6153162/8662476
quelle