7
votes

Conversion des dates avec PHP pour DateTime dans SQL

J'ai un forum en PHP qui prend une date comme dans le formulaire jj / mm / aaaa de HH: mm: ss . Cependant, je dois l'insérer pour SQL comme DateTime dans le format comme AAAA-MM-DD HH: MM: SS . Comment puis-je convertir ces données?


1 commentaires

Cela a été demandé ici un million de fois. Une recherche rapide trouvera votre réponse.


4 Réponses :


2
votes

deux de plusieurs manières possibles:

  1. convertissez le code puis transmettez la valeur convertie en mysql: $ mysqldate = date ('Y-M-D H: I: S', $ phpdate);
  2. Laissez MySQL faire le travail en utilisant ses fonctions intégrées: $ Query = "Set de table de mise à jour DateTimefield = de_unixtime ($ phpdate) ...";

0 commentaires

3
votes

Vous pouvez utiliser la stratégie et la date de retravailler le format.

$new_date = date( "Y-m-d H:i:s", strtotime( $old_date ) );


7 commentaires

Je ne peux pas obtenir ceci pour le travailler des sorties: String (33) "12121212-0505-0909 1212: 0505: 0000" à partir de $ StartDaTec = Date ("AAAA-MM-DD HH: MM: SS", Strtotime ($ _ Post ["StartEventDate ']));


Désolé, le format actuel est Y-M-D H: I: S Mon format consistait à illustrer ce qu'il reviendrait. Ma faute. Jetez un coup d'œil ici sur la mise en forme de la fonction de date lien afin que ce soit: < Code> $ finalc = date ("YMD H: I: S", Strtotime ($ _ POST ["finalDate ']));


Votre suggestion peut conduire à une mauvaise conversion. Regardez ce que j'ai écrit dans le commentaire.


Vous êtes correct, l'hypothèse est que le bon sens prévaudra. Votre implémentation utilisant PHP 5.3+ fonctionnerait parfaitement, mais ma solution fonctionnerait pour une version, avec les considérations correctes à l'esprit.


J'accepte une certaine mesure. La version 5.3+ remplacera 5,2+ tôt ou plus tard, comme dans toutes les versions précédentes. Alors peut-être qu'il vaut mieux penser un peu devant, ne pensez-vous pas?


Peut-être, cependant, il n'y avait pas de cette portée dans la question à présumer, il est donc préférable d'aller pour la taille unique.


Cette réponse est plus générale que la réponse acceptée et ce que je cherchais comme la plupart des dates que vous convertissez ne seront pas au format spécifique de la réponse acceptée.



1
votes

Si vous avez DateTime disponible à partir d'un format ci-dessus, vous devez simplement utiliser la fonction suivante.

function localToMysql($dateTime){
  $date_chunks = explode('/', $dateTime);
    $time_chunks = explode(' ', $date_chunks[2]);
    $final_format = $time_chunks[0] . "-" . $date_chunks[1] . "-" . $date_chunks[0] . " " . $time_chunks[1];


0 commentaires

19
votes

Votre format de date de date est incorrect: jj / mm / aaaa HH: mm: ss code>. Vous voulez probablement dire d / m / y h: i: s code>

Si vous avez 5.3+ version, il existe un moyen sûr de convertir la date d'entrée en un autre format. Voici un exemple: P>

$timestamp = '31/05/2001 12:22:56';
$timestamp = date_create_from_format('d/m/Y H:i:s', $timestamp);
echo date_format($timestamp, 'Y-m-d H:i:s');


1 commentaires

Clarifier où vous pouvez avoir un problème. Lorsque vous utilisez Strtotime (), le séparateur est important; Dans votre cas, c'est SLASH (/) Signification: le format américain est supposé (m / d / y). Si le séparateur est tiret (-), le format européen (D-M-Y) est supposé. Alors, n'assumez rien;)