Calcule la différence entre deux dates en PHP
SALUT, j'ai un couple de postes dans ma base de données MySql server, l'une de l'info contenu dans chaque post, c'est la date et l'heure dans le format datetime (Ex. 2010-11-26 21:55:09) lorsque le poste a été faite.
Donc, je veux retrive la date et l'heure à partir de SQL server à l'aide de la fonction MAINTENANT() et calcule le nombre de secondes ou de minutes ou d'heures ou de jours il y a poster l'info.
Je ne sais pas comment créer ce script php, mais je sais que pour vous est deja fait, donc merci pour toute aide.
Vous devez vous connecter pour publier un commentaire.
Comme billythekid dit, vous pouvez utiliser le
date_diff()
fonction de si vous utilisez PHP5.3+, si vous n'êtes pas alors il existe différentes méthodes. Comme indiqué par d'autres affiches. La méthode la plus rapide dans MySQL si vous voulez savoir le temps split dans les "heures:minutes:secondes" hiérarchie est d'utiliser le TIMEDIFF() la fonction.Si vous voulez que les secondes, utiliser le timestamp unix de fonctionnalités de MySQL ou PHP, vous pouvez convertir MySQL dates de PHP rapidement à l'aide de
strtotime()
.vous pouvez utiliser le date_diff() la fonction
http://php.net/manual/en/function.date-diff.php
Quelque chose comme...
edit --
J'ai réellement résoudre ce problème sur un de mes twitter apps à l'aide de cette fonction...
Vous la passer dans un timestamp unix de l'heure à vérifier (l'heure) et il renvoie les différents chaîne.
$date1=date_create("2013-03-15");
$date2=date_create("2013-12-12");
$diff=date_diff($date1,$date2);
Habituellement, vous faire ce genre de chose dans une requête, mais MySQL n'est pas très bon avec des intervalles (il serait très simple avec PostgreSQL). Vous pourriez convertir le timestamp unix, ce serait le nombre de secondes entre les deux dates :
J'ai pensé à DATEDIFF, mais il ne renvoie le nombre de jours entre les deux dates.
Vous pouvez le faire en PHP, par exemple, avec la classe DateTime :
(Il y a une voie procédurale pour ce faire, si vous n'êtes pas un fan de la programmation orientée objet.)
C'est certainement la solution que j'utiliserais si je ne peux pas le faire avec le SGBD. DateTime::diff retourne un objet DateInterval, qui contient le nombre de secondes, minutes, heures, jours, etc. entre les deux dates.
Vous pouvez aussi le faire avec des horodatages en PHP :
Qui permettrait le retour la même chose que la requête SQL.
Une solution facile est possible à partir de l'intérieur de la Requête SQL:
Documentation ici: MySQL Ref
J'ai vraiment besoin de faire cela en PHP moi-même et tout billythekid post est dans la bonne direction, il est tombé à court d'. J'ai minimisé le code qu'il doit être clair que le deuxième paramètre est à partir d'une base de données avec un
DATETIME
type de colonne.Un rappel de l'évidence: vous pouvez aussi utiliser
substr($interval->format('%R%a days'),1)
si vous avez besoin d' juste entier.