5 votes

La date est insérée sous la forme 0000-00-00 00:00:00 dans mysql.

Mon $date la sortie est dans la boucle foreach

09/25/11, 02/13/11, 09/15/10, 06/11/10, 04/13/10, 04/13/10, 04/13/10, 09/24/09, 02/19/09, 12/21/08

Ma requête mysql(PHP) est la suivante

("INSERT INTO table_name(`field1`, `field2`,`date`) VALUES ('".$value1."','".$value2 ."','".$date."')");

Question : Dans ma base de données, toutes les dates sont enregistrées sous la forme 0000-00-00 00:00:00 . Mais la 4ème date (06/11/10) est stockée en tant que 2006-11-10 00:00:00 .

J'ai essayé avec date('Y-m-d H:i:s', $date); mais aucune aide.

Remarque : le champ de ma base de données est de type date. Avez-vous une idée ?

13voto

Joel Hinz Points 15918

Vous êtes sur la bonne voie avec votre date('Y-m-d H:i:s',$date); mais la fonction date() prend un horodatage comme second argument, et non une date.

Je suppose que vos exemples sont au format de date américain, car ils en ont l'air. Vous pouvez faire cela, et cela devrait vous donner les valeurs que vous recherchez :

date('Y-m-d H:i:s', strtotime($date));

La raison pour laquelle cela ne fonctionne pas est qu'il s'attend à ce que la date soit au format AAAA-MM-JJ, et essaie d'évaluer vos données comme cela. Mais vous avez MM/DD/YY, ce qui le perturbe. L'exemple 06/11/10 est le seul qui peut être interprété comme une date valide YYYY-MM-DD parmi vos exemples, mais PHP pense que vous voulez dire 06 pour l'année, 11 pour le mois et 10 pour le jour.

1voto

Jari Points 5820

J'ai créé ma propre fonction dans ce but, elle peut vous être utile :

function getTimeForMysql($fromDate, $format = "d.m.y", $hms = null){
    if (!is_string($fromDate))  
        return null ;       
    try {
        $DT = DateTime::createFromFormat($format, trim($fromDate)) ;
    } catch (Exception $e) { return null ;}

    if ($DT instanceof DateTime){
        if (is_array($hms) && count($hms)===3)
             $DT->setTime($hms[0],$hms[1],$hms[2]) ;
        return ($MySqlTime = $DT->format("Y-m-d H:i:s")) ? $MySqlTime : null ;
    }
    return null ;
}

Donc dans votre cas, vous utilisez le format m/d/yy :

$sql_date = getTimeForMysql($date, "m/d/yy") ;
if ($sql_date){
  //Ok, proceed your date is correct, string is returned.
}

0voto

user4035 Points 14765

Vous n'avez pas le siècle dans votre date, essayez de le convertir comme ceci :

<?php
$date = '09/25/11';
$date = DateTime::createFromFormat('m/d/y', $date);
$date = $date->format('Y-m-d');
print $date;

Imprimés :

2011-09-25

Vous pouvez maintenant insérer $date dans MySQL.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X