2011-02-17 5 views
2

J'ai des dates stockées dans ma table MySQL comme aaaa-mm-jj (ou le format typique de MySQL 'date'). Comment puis-je savoir combien de jours il reste avant cette date?Jours complets entre deux dates en PHP?

Comme, par exemple, si je devais:

2011-03-05 

Il dirait:

17 More Days 
+0

Voir http://stackoverflow.com/questions/5010946/days-between-two-dates/ 5010969 # 5010969 il utilise PHP 5.3 et OOP. – Jacob

Répondre

2

En PHP:

$days = (strtotime($date) - time())/86400; 

MySQL:

SELECT 
    ((UNIX_TIMESTAMP(date) - UNIX_TIMESTAMP())/86400) AS days 
FROM table; 

Ou comme @coreyward a déclaré (MySQL):

SELECT 
    DATEDIFF(UNIX_TIMESTAMP(date,NOW()) AS days 
FROM table; 
+0

Pourquoi ignorez-vous la méthode intégrée 'date_diff'? http://dev.mysql.com/doc/refman/5.1/fr/date-and-time-functions.html#function_datediff – coreyward

+0

@coreyward: Je pense que la question est "pourquoi n'êtes-vous pas?", mais si vous must know: ** A) ** 'date_diff' est uniquement disponible sur PHP 5.3+. ** B) ** parce que si elle est corrélée directement à l'exemple de MySQL et je ne sais pas quelle solution l'OP recherche. ** C) ** pour les résolutions de jour et inférieures 'date_diff' n'apporte aucune valeur ajoutée. –

+0

MySQL ≠ PHP. Il y a une méthode dans MySQL pour faire ce que vous faites ensemble. Il s'appelle 'date_diff' et je l'ai lié dans mon commentaire, et il est utilisé dans la réponse à la question liée à MySQL à laquelle je suis lié dans ma réponse. – coreyward

1

En PHP 5 - Date DIFF

http://php.net/manual/en/function.date-diff.php

Vous avez besoin: (PHP 5> = 5.3.0)

Sinon, vous pouvez utiliser cette fonction:

<?php 
$today = strtotime("2011-02-03 00:00:00"); 
$myBirthDate = strtotime("1964-10-30 00:00:00"); 
printf("I'm %d days old.", round(abs($today-$myBirthDate)/60/60/24)); 
?> 
0
+0

La réponse acceptée dans l'exemple PHP est moche. Je préfère ma réponse dans http://stackoverflow.com/questions/5010946/days-between-two-dates/5010969#5010969 Les gens ont besoin d'utiliser la POO plus. – Jacob

+0

Et la réponse la plus haute votée sur la même question est la même chose de base que vous aviez. Six d'une, une demi-douzaine d'une autre ... – coreyward

Questions connexes