So verhindern Sie, dass PHP ein DateTime-Objekt mit dem Wert "thirty" in "-0001-11-30" konvertiert

8

Momentan arbeite ich mit Doctrine 2 und MySQL. Ich stoße auf Probleme, wenn ich mit Datetime-Feldern in Mysql bzw. DateTime in PHP arbeite. Wenn in meiner Datenbank der Datumswert "0000-00-00" ist, wird dieser Wert in PHP in -0001-11-30 konvertiert. Ich freue mich darüber, also muss ich den Wert des Datums für "0000-00-00" überprüfen. Hat jemand eine Idee, um zu helfen? Danke.

N.B. Ich denke, wenn es richtig ist zu überprüfen, "-0001-11-30" statt "0000-00-00".

    
artaxerxe 06.07.2011, 06:02
quelle

4 Antworten

7

Wenn das Datum nicht festgelegt ist, verwenden Sie NULL , um diesen Status anzugeben. Das löst Ihr Problem und macht das Datenbankschema viel klarer und ausführlicher.

    
Crozin 06.07.2011, 06:09
quelle
5

Alternativ können Sie den NO_ZERO_DATE SQL-Modus in Ihrem MySQL-Server. Sie können es für Ihre aktuelle Sitzung festlegen, wie in Ссылка

    
Álvaro González 06.07.2011 06:11
quelle
0

Ich verwende diese Funktion in meinem gesamten Code. Übergeben Sie eine datumsähnliche Zeichenfolge oder ein DateTime (Immutable) -Objekt; es spuckt ein PHP DateTime oder DateTimeImmutable Objekt aus, oder false, wenn die Eingabe eine "beyond" -ähnliche Zeichenfolge ist. Mit dem zweiten Parameter kann das Ergebnis auch unveränderlich werden:

%Vor%

Grundsätzlich ein "Ich bin mir nicht sicher, womit ich angefangen habe, aber ich weiß, was ich will", Funktion.

(Hinweis: Ein bisschen PHP 7-Syntax hier, aber leicht an PHP 5 angepasst)

    
Stephen R 25.10.2017 17:01
quelle
-4

Wenn Sie dies in Ihrer Datenbank nicht handhaben können, können Sie dieses Snippet verwenden, um dieses Verhalten zu vermeiden und das Datum zu validieren

%Vor%     
nikoskip 21.08.2015 17:54
quelle

Tags und Links