Maison > base de données > tutoriel mysql > Comment résoudre les conflits de format de date lors de l'insertion de dates de PHP dans MySQL ?

Comment résoudre les conflits de format de date lors de l'insertion de dates de PHP dans MySQL ?

DDD
Libérer: 2024-12-06 18:14:11
original
277 Les gens l'ont consulté

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

Différences de format de date dans les insertions PHP MySQL

Lors d'une tentative d'insertion de dates dans une base de données MySQL à l'aide de PHP, les utilisateurs peuvent rencontrer des erreurs dues à incohérences de format. Le format de sélecteur de date jQuery populaire, "25/08/2012", est en conflit avec les formats de date pris en charge par MySQL.

Pour résoudre ce problème, il est essentiel de comprendre les exigences littérales de date de MySQL :

  1. Formats de chaîne : AAAA-MM-JJ ou AA-MM-JJ, avec délimiteurs facultatifs. Exemples : '2012-12-31', '2012/12/31', '2012^12^31'.
  2. Formats de chaîne illimités : AAAAMMJJ ou AAMMJJ. Exemples : '20070523', '070523' (interprété comme '2007-05-23').
  3. Formats numériques : AAAAMMJJ ou AAMMJJ. Exemples : 19830905, 830905 (interprété comme '1983-09-05').

Le format "25/08/2012" n'étant pas conforme à ces règles, il doit être converti. Plusieurs options sont disponibles :

1. Convertir le format jQuery Datepicker

Configurez le sélecteur de date pour fournir les dates dans un format pris en charge :

$( "selector" ).datepicker({
    altField : "#actualDate"
    altFormat: "yyyy-mm-dd"
});
Copier après la connexion

Ou définissez l'option dateFormat :

$( "selector" ).datepicker({
    dateFormat: "yyyy-mm-dd"
});
Copier après la connexion

2. Utilisez la fonction STR_TO_DATE() de MySQL

Convertissez la chaîne lors de l'insertion :

INSERT INTO user_date VALUES ('', '$name', STR_TO_DATE('$date', '%m/%d/%Y'))
Copier après la connexion

3. Convertir à l'aide de l'objet DateTime de PHP

Obtenir une chaîne formatée appropriée ou un horodatage UNIX :

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

Pour l'insertion d'un horodatage UNIX :

INSERT INTO user_date VALUES ('', '$name', FROM_UNIXTIME($timestamp))
Copier après la connexion

4 . Manipulation manuelle des chaînes

Extraire les parties de date et les concaténer dans un format valide :

$parts = explode('/', $_POST['date']);
$date  = "$parts[2]-$parts[0]-$parts[1]";
Copier après la connexion

Attention :

  • Utilisez des instructions préparées pour empêcher l'injection SQL.
  • Envisagez d'utiliser le type DATE au lieu de DATETIME ou TIMESTAMP pour les valeurs de date uniquement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal