J'essaie d'insérer une date, disons CURDATE()
à un sql DateTime
champ.
Ma date est au format de : 28/01/2008
Quand j'essaie de l'insérer dans le SQL, je n'obtiens que des zéros.
Alors comment puis-je le convertir correctement ?
J'essaie d'insérer une date, disons CURDATE()
à un sql DateTime
champ.
Ma date est au format de : 28/01/2008
Quand j'essaie de l'insérer dans le SQL, je n'obtiens que des zéros.
Alors comment puis-je le convertir correctement ?
$new_date = date('Y-m-d', strtotime($old_date));
strtotime() va essayer d'analyser une chaîne de caractères ( $old_date
dans ce cas) et comprendre quelle est la date. Il s'attend à recevoir une chaîne de caractères contenant un format de date en anglais ou une description textuelle de la date en anglais. En cas de succès, il renvoie un Horodatage Unix (le nombre de secondes depuis le 1er janvier 1970). Maintenant, nous avons obtenu un point dans le temps à partir de cette chaîne.
date() va ensuite transformer ce point dans le temps obtenu précédemment en un format, décrit dans le premier paramètre, dans l'exemple ci-dessus c'est le 'Y-m-d'
Y
- Une représentation numérique complète d'une année, 4 chiffresm
- Représentation numérique d'un mois, avec des zéros en tête.d
- Jour du mois, 2 chiffres avec des zéros de tête-
- littéralement le symbole moinsVoici un liste complète de caractères que vous pouvez utiliser dans la chaîne de paramètres du format
Puisque vous utilisez la notation européenne de la date (dd/mm/yyyy), l'adresse de l'ordinateur est la suivante strtotime retournera 0 (qui sera à son tour converti en 1970-01-01 par la fonction date ) si vous n'utilisez pas - o . comme séparateur.
Si vous souhaitez utiliser strtotime, vous devrez donc modifier légèrement vos chaînes de date :
$olddate = '28/01/2008';
$newdate = strtotime(str_replace('/', '-', $olddate));
$newdate devrait maintenant contenir '2008-01-28'...
join('-',array_reverse(explode('/',$date)))
pour obtenir le format de date standard YYYY-MM-DD Mysql.
ou utilisez simplement la fonction MySQL DATE_FORMAT
J'essaie d'insérer une date, disons CURDATE() dans un champ sql DateTime.
Pourquoi n'utilisez-vous pas directement la fonction MySQL ?
insert tbl (id, other, datecol)
values(NULL, 'abcdef', CURDATE());
Ma date est au format de : 28/01/2008
Si ce n'est pas CURDATE() que vous voulez, mais plutôt une variable PHP au format dd/mm/yyyy, alors voyez ceci Page de manuel MySQL pour savoir comment formater les littéraux. Les formats sûrs sont YYYY-MM-DD
y YYYYMMDD
sans temps.
$date = '28/01/2008';
$query = "insert tbl (id, other, datecol)
values(NULL, 'abcdef', '" . date('Ymd', strtotime($date)) . "');";
Note : yyyymmdd est également un format valide dans SQL Server.
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.