Heim >Datenbank >MySQL-Tutorial >Wie löse ich Datumsformatkonflikte beim Einfügen von Datumsangaben aus PHP in MySQL?

Wie löse ich Datumsformatkonflikte beim Einfügen von Datumsangaben aus PHP in MySQL?

DDD
DDDOriginal
2024-12-06 18:14:11280Durchsuche

How to Resolve Date Format Conflicts When Inserting Dates from PHP into MySQL?

Datumsformatdiskrepanzen bei PHP-MySQL-Einfügungen

Beim Versuch, Datumsangaben mit PHP in eine MySQL-Datenbank einzufügen, können Benutzer aufgrund von Fehlern auf Fehler stoßen Formatkonflikte. Das beliebte jQuery-Datumsauswahlformat „25.08.2012“ steht in Konflikt mit den von MySQL unterstützten Datumsformaten.

Um dieses Problem zu beheben, ist es wichtig, die Datumsliteralanforderungen von MySQL zu verstehen:

  1. String-Formate: JJJJ-MM-TT oder JJ-MM-TT, mit optionalen Trennzeichen. Beispiele: '2012-12-31', '2012/12/31', '2012^12^31'.
  2. Trennungslose Zeichenfolgenformate: JJJJMMTT oder JJMMTT. Beispiele: „20070523“, „070523“ (interpretiert als „23.05.2007“).
  3. Numerische Formate: JJJJMMTT oder JJMMTT. Beispiele: 19830905, 830905 (interpretiert als „05.09.1983“).

Da das Format „25.08.2012“ nicht diesen Regeln entspricht, muss es konvertiert werden. Es stehen mehrere Optionen zur Verfügung:

1. Konvertieren Sie das jQuery Datepicker-Format

Konfigurieren Sie den Datepicker so, dass Datumsangaben in einem unterstützten Format bereitgestellt werden:

$( "selector" ).datepicker({
    altField : "#actualDate"
    altFormat: "yyyy-mm-dd"
});

Oder legen Sie die dateFormat-Option fest:

$( "selector" ).datepicker({
    dateFormat: "yyyy-mm-dd"
});

2. Verwenden Sie die STR_TO_DATE()-Funktion von MySQL

Konvertieren Sie die Zeichenfolge während des Einfügens:

INSERT INTO user_date VALUES ('', '$name', STR_TO_DATE('$date', '%m/%d/%Y'))

3. Konvertieren mit dem DateTime-Objekt von PHP

Erhalten Sie eine geeignete formatierte Zeichenfolge oder einen UNIX-Zeitstempel:

$dt = \DateTime::createFromFormat('m/d/Y', $_POST['date']);
$date = $dt->format('Y-m-d');
$timestamp = $dt->getTimestamp();

Für das Einfügen von UNIX-Zeitstempeln:

INSERT INTO user_date VALUES ('', '$name', FROM_UNIXTIME($timestamp))

4 . Manuelle String-Manipulation

Extrahieren Sie die Datumsteile und verketten Sie sie in einem gültigen Format:

$parts = explode('/', $_POST['date']);
$date  = "$parts[2]-$parts[0]-$parts[1]";

Achtung:

  • Verwenden Sie vorbereitete Anweisungen, um SQL-Injection zu verhindern.
  • Erwägen Sie die Verwendung des DATE-Typs anstelle von DATETIME oder TIMESTAMP für reine Datumswerte.

Das obige ist der detaillierte Inhalt vonWie löse ich Datumsformatkonflikte beim Einfügen von Datumsangaben aus PHP in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn