Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Roland Matteoli
le Dimanche 26 Octobre 2003 20:31, Romain écrivait :
j'essaye de calculer une difference entre la date actuelle et une date stockée dans une base sql. la date de la base est de la forme (varchar 32): $date_base="30-11-03"; $date_jour= date("d-m-y"); Or si je fais: $diff= $date_jour - $date_base; j'obtiens 4 ou lieu de 35. Pourquoi?
Parce que tu soustrais 2 chaines de caractères, et non pas 2 dates.
Pour faire une différence de dates, il faut convertir les dates en secondes avec la fonction mktime (voir manuel).
$date_base=mktime(0,0,0,30,11,2003); $date_jour=mktime(0,0,0,date(d),date(m),date(Y)); $diff=$date_jour - $date_base; // La différence obtenue est en secondes, il faut la convertir: $diff_en_jours=$diff/(24*60*60); // normalement ça doit tomber juste !
-- Roland Mattéoli
le Dimanche 26 Octobre 2003 20:31, Romain écrivait :
j'essaye de calculer une difference entre la date actuelle et une
date stockée dans une base sql.
la date de la base est de la forme (varchar 32):
$date_base="30-11-03";
$date_jour= date("d-m-y");
Or si je fais:
$diff= $date_jour - $date_base;
j'obtiens 4 ou lieu de 35. Pourquoi?
Parce que tu soustrais 2 chaines de caractères, et non pas 2 dates.
Pour faire une différence de dates, il faut convertir les dates
en secondes avec la fonction mktime (voir manuel).
$date_base=mktime(0,0,0,30,11,2003);
$date_jour=mktime(0,0,0,date(d),date(m),date(Y));
$diff=$date_jour - $date_base;
// La différence obtenue est en secondes, il faut la convertir:
$diff_en_jours=$diff/(24*60*60);
// normalement ça doit tomber juste !
le Dimanche 26 Octobre 2003 20:31, Romain écrivait :
j'essaye de calculer une difference entre la date actuelle et une date stockée dans une base sql. la date de la base est de la forme (varchar 32): $date_base="30-11-03"; $date_jour= date("d-m-y"); Or si je fais: $diff= $date_jour - $date_base; j'obtiens 4 ou lieu de 35. Pourquoi?
Parce que tu soustrais 2 chaines de caractères, et non pas 2 dates.
Pour faire une différence de dates, il faut convertir les dates en secondes avec la fonction mktime (voir manuel).
$date_base=mktime(0,0,0,30,11,2003); $date_jour=mktime(0,0,0,date(d),date(m),date(Y)); $diff=$date_jour - $date_base; // La différence obtenue est en secondes, il faut la convertir: $diff_en_jours=$diff/(24*60*60); // normalement ça doit tomber juste !
-- Roland Mattéoli
Thibaut Allender
Romain wrote:
Or si je fais: $diff= $date_jour - $date_base; j'obtiens
4
ou lieu de 35. Pourquoi?
parce qu'on ne peut pas faire un soustraction sur une date de cette facon !
comment php pourrait-il deviner que tu utilises des dates...?
ca, c'est un manque de logique de ta part ensuite, il y a manque de methodologie, celle ci consistant d'abord a consulter la doc
si on le fait, et qu'on arrive sur http://fr.php.net/manual/fr/function.date.php
on vois un magnifique exemple de ce que tu cherches a faire...
a+
-- freelance + web design + php dev + digital photo + http://www.capsule.org
Romain wrote:
Or si je fais:
$diff= $date_jour - $date_base;
j'obtiens
4
ou lieu de 35. Pourquoi?
parce qu'on ne peut pas faire un soustraction sur une date de cette facon !
comment php pourrait-il deviner que tu utilises des dates...?
ca, c'est un manque de logique de ta part
ensuite, il y a manque de methodologie, celle ci consistant d'abord a
consulter la doc
si on le fait, et qu'on arrive sur
http://fr.php.net/manual/fr/function.date.php
on vois un magnifique exemple de ce que tu cherches a faire...
a+
--
freelance + web design + php dev + digital photo
+ http://www.capsule.org
Or si je fais: $diff= $date_jour - $date_base; j'obtiens
4
ou lieu de 35. Pourquoi?
parce qu'on ne peut pas faire un soustraction sur une date de cette facon !
comment php pourrait-il deviner que tu utilises des dates...?
ca, c'est un manque de logique de ta part ensuite, il y a manque de methodologie, celle ci consistant d'abord a consulter la doc
si on le fait, et qu'on arrive sur http://fr.php.net/manual/fr/function.date.php
on vois un magnifique exemple de ce que tu cherches a faire...
a+
-- freelance + web design + php dev + digital photo + http://www.capsule.org
Stephane
"Romain" a écrit
Bonjour,
j'essaye de calculer une difference entre la date actuelle et une date stockée dans une base sql.
la date de la base est de la forme (varchar 32): $date_base="30-11-03";
$date_jour= date("d-m-y");
Or si je fais: $diff= $date_jour - $date_base;
j'obtiens
4 ou lieu de 35. Pourquoi?
Merci
Salut,
A mon avis, c'est une très mauvaise idée à la base de stocker des dates dans un champ de type varchar : on arrive très vite à des blocages de ce genre. La priorité est de passer ce champ en type date, ce qui te permettra par la suite d'utiliser toutes les fonctions date (très pratiques) dans les SELECT de MySQL (je suppose que tu utilises MySQL)
Le mieux est de procéder de la manière suivante:
1. ajouter une nouvelle colonne de type "date" alter table test_date add column new_date date;
2. mettre à jour cette colonne à l'aide l'ancienne colonne : update test_date set new_date=concat(substring(old_date,7,2),'-',substring(old_date,4,2),'-',substring(old_date,1,2));
3. droper l'ancienne colonne alter table test_date drop column old_date;
4. renommer la nouvelle colonne alter table test_date change new_date old_date date.
-- Stéphane La souplesse d'esprit permet de s'adapter dans toutes circonstances.
http://www.velo-passion.com pour les fans de vélo http://www.lorimier.com/chemin-des-cretes-du-jura une ballade à pied d'une semaine à 2 http://www.lapassade.ch pour les fans de théâtre
"Romain" a écrit
Bonjour,
j'essaye de calculer une difference entre la date actuelle et une date
stockée dans une base sql.
la date de la base est de la forme (varchar 32):
$date_base="30-11-03";
$date_jour= date("d-m-y");
Or si je fais:
$diff= $date_jour - $date_base;
j'obtiens
4
ou lieu de 35. Pourquoi?
Merci
Salut,
A mon avis, c'est une très mauvaise idée à la base de stocker des dates dans un champ de type varchar : on arrive très
vite à des blocages de ce genre. La priorité est de passer ce champ en type date, ce qui te permettra par la suite
d'utiliser toutes les fonctions date (très pratiques) dans les SELECT de MySQL (je suppose que tu utilises MySQL)
Le mieux est de procéder de la manière suivante:
1. ajouter une nouvelle colonne de type "date"
alter table test_date add column new_date date;
2. mettre à jour cette colonne à l'aide l'ancienne colonne :
update test_date set new_date=concat(substring(old_date,7,2),'-',substring(old_date,4,2),'-',substring(old_date,1,2));
3. droper l'ancienne colonne
alter table test_date drop column old_date;
4. renommer la nouvelle colonne
alter table test_date change new_date old_date date.
--
Stéphane
La souplesse d'esprit permet de s'adapter dans toutes circonstances.
http://www.velo-passion.com pour les fans de vélo
http://www.lorimier.com/chemin-des-cretes-du-jura une ballade à pied d'une semaine à 2
http://www.lapassade.ch pour les fans de théâtre
j'essaye de calculer une difference entre la date actuelle et une date stockée dans une base sql.
la date de la base est de la forme (varchar 32): $date_base="30-11-03";
$date_jour= date("d-m-y");
Or si je fais: $diff= $date_jour - $date_base;
j'obtiens
4 ou lieu de 35. Pourquoi?
Merci
Salut,
A mon avis, c'est une très mauvaise idée à la base de stocker des dates dans un champ de type varchar : on arrive très vite à des blocages de ce genre. La priorité est de passer ce champ en type date, ce qui te permettra par la suite d'utiliser toutes les fonctions date (très pratiques) dans les SELECT de MySQL (je suppose que tu utilises MySQL)
Le mieux est de procéder de la manière suivante:
1. ajouter une nouvelle colonne de type "date" alter table test_date add column new_date date;
2. mettre à jour cette colonne à l'aide l'ancienne colonne : update test_date set new_date=concat(substring(old_date,7,2),'-',substring(old_date,4,2),'-',substring(old_date,1,2));
3. droper l'ancienne colonne alter table test_date drop column old_date;
4. renommer la nouvelle colonne alter table test_date change new_date old_date date.
-- Stéphane La souplesse d'esprit permet de s'adapter dans toutes circonstances.
http://www.velo-passion.com pour les fans de vélo http://www.lorimier.com/chemin-des-cretes-du-jura une ballade à pied d'une semaine à 2 http://www.lapassade.ch pour les fans de théâtre