Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

comparer une date mysql

6 réponses
Avatar
Napalm28
Salut a tous.

j'ai mis en php une date avec la fonction now() dans un champs datestamp de
mysql.

Si je récupere ce champ depuis la base, comment je peux savoir combien de
jour s'est écoulé entre cette date stockée dans la base de donnée et le
moment où le script est executé ?

Merci de votre aide.

6 réponses

Avatar
FightClub!
Salut a tous.

j'ai mis en php une date avec la fonction now() dans un champs datestamp de
mysql.

Si je récupere ce champ depuis la base, comment je peux savoir combien de
jour s'est écoulé entre cette date stockée dans la base de donnée et le
moment où le script est executé ?

Merci de votre aide.


avec une requete mysql :
select to_days(now())-to_days(tonchamp) as nbjour from tatable where ...

NB: de mémoire, la fonction to_days n'existe que sur les versions
récentes de mysql (http://www.mysql.com/doc pour vérifier)

--

http://SurveilleTonSite.sd2i.org
... un site web en panne ne sert à rien !

Avatar
John GALLET
Bonjour,

Si je récupere ce champ depuis la base, comment je peux savoir combien de
jour s'est écoulé entre cette date stockée dans la base de donnée et le
moment où le script est executé ?


Il est rare et même limite anormal que tu aies besoin de faire ça dans le
client (i.e. php). Les clauses WHERE / AND dans les instructions DML sont
faites pour ça pour les restrictions, et idem pour les conversions. Cf le
manuel de mysql "date and time functions".

a++;
JG

Avatar
Guillaume Bouchard
Napalm28 wrote:
Salut a tous.


Salut.

j'ai mis en php une date avec la fonction now() dans un champs datestamp de
mysql.


Donc tu l'as mit avec mysql.

Si je récupere ce champ depuis la base, comment je peux savoir combien de
jour s'est écoulé entre cette date stockée dans la base de donnée et le
moment où le script est executé ?


La méthode que je te recomande est celle qui consiste à deamander à
mysql de faire sont boulot. Il suffit simplement si je me rappel bien de
faire :

SELECT (NOW() - champs_date) as temps FROM ...

Je te renvois à la bonne page de la doc [1] de mysql sur les fonctions
de gestion du temps.

Maitenant si pour une raison ou une autre tu voudrais faire cela avec
PHP, bien que je ne pense pas qu'il s'agisse de la bonne manière de
faire, je te laisse voir la fonction strtotime [2].

$date = strtotime($quiviendemysql)
$difference = time() - $date

Tu peux evidament recuperer le timestamp Unix via Mysql dirrectement
avec la fonction qui va bien, UNIX_TIMESTAMP si mes souvenirs sont bon [1]

[1] http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html
[2] http://fr2.php.net/strtotime

--
Guillaume.

Avatar
Napalm28
"John GALLET" a écrit dans le message de news:

Bonjour,

Si je récupere ce champ depuis la base, comment je peux savoir combien de
jour s'est écoulé entre cette date stockée dans la base de donnée et le
moment où le script est executé ?


Il est rare et même limite anormal que tu aies besoin de faire ça dans le
client (i.e. php). Les clauses WHERE / AND dans les instructions DML sont
faites pour ça pour les restrictions, et idem pour les conversions. Cf le
manuel de mysql "date and time functions".




je pense que je me suis mal exprimé.

J'ai par exemple un champ datestamp qui s'appelle toto dans ma base mysql.

Il y a 5 jours un utilisateur fait une action et je rempli ce champ (peu
importe l'enregistrement) dans ma base avec la fonction now();

Aujourd'hui, je récupere ce champ toto avec php et met le contenu de ce
champ toto dans une variable $tata.

maintenant, je voudrais faire un echo qui dit

echo 'vous avez fait telle action il y a ' . ?????? . ' jours / heures';

les ???? calculant la différence entre la date qui se trouve dans le champs
toto (que j'ai récuperé dans $tata) et le moment où le script est executé.


Avatar
CARPENTIER
Napalm28 wrote:

je pense que je me suis mal exprimé.

J'ai par exemple un champ datestamp qui s'appelle toto dans ma base mysql.

Il y a 5 jours un utilisateur fait une action et je rempli ce champ (peu
importe l'enregistrement) dans ma base avec la fonction now();

Aujourd'hui, je récupere ce champ toto avec php et met le contenu de ce
champ toto dans une variable $tata.

maintenant, je voudrais faire un echo qui dit

echo 'vous avez fait telle action il y a ' . ?????? . ' jours / heures';


Il faudrait plutôt que tu expliques pourquoi les explications de Fightclub,
de Guillaume et de John ne te convienent pas au lieu de réécrire la même
chose.
Au lieu de récupérer toto, ils te disent de récupérer directement le nombre
de jours. Ce qui est évidement le plus simple.

Avatar
P'tit Marcel
Napalm28 wrote:

J'ai par exemple un champ datestamp qui s'appelle toto dans ma base mysql.

Il y a 5 jours un utilisateur fait une action et je rempli ce champ (peu
importe l'enregistrement) dans ma base avec la fonction now();

Aujourd'hui, je récupere ce champ toto avec php et met le contenu de ce
champ toto dans une variable $tata.

maintenant, je voudrais faire un echo qui dit

echo 'vous avez fait telle action il y a ' . ?????? . ' jours / heures';



Comme décrit par John, tu peux le faire dans MySQL, genre :

SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(date),"%j")
- 1 AS jour, FROM_UNIXTIME(UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(date),
"%h") AS heure ...

mais tout cela n'est plus du php.


--
P'tit Marcel