J'ai une enregistrement renvoyé de MySQL qui a un champ DateTime. Ce que je veux faire, c'est prendre cette valeur et voir si elle est plus âgée puis 24 heures, je suppose à l'aide de l'heure de PHP () pour obtenir l'heure actuelle.
Pour le moment si je les faisant écho, je reçois: P>
1276954824 this is php's time() 2010-06-19 09:39:23 this is the MySQL datetime
4 Réponses :
Pourquoi mélangez-vous des horaires PHP et MySQL? p>
Au lieu de cela, faites la comparaison directement dans MySQL: P>
Pour obtenir la date / heure actuelle dans MySQL, utilisez la fonction Ceci vérifierait si la date donnée (probablement dans une colonne) est âgée de plus de 24 heures. P>
S'il est absolument nécessaire de convertir un horodatage MySQL en horodatage UNIX, vous pouvez utiliser la fonction () code>. Vous pouvez comparer, par exemple, 2010-06-19 09:39:23 ' UNIX_TIMESTAMP () de MySQL () code> pour le faire. P>
Je ferais, mais pour le moment, je n'ai pas accès à la requête, c'est pourquoi j'ai besoin de le faire avec les valeurs retournées.
Pas de succès?
if(time() - strtotime("2010-06-19 09:39:23") > 60*60*24) {
// timestamp is older than one day
}
Merci beaucoup, ma tête ne semblait pas être vissée correctement aujourd'hui!
Vous pouvez également faire:
SELECT * FROM my_table WHERE timestamp < NOW() - INTERVAL 1 DAY;
J'ai écrit une fonction, par laquelle vous pouvez déterminer si la première date donnée est un jour ou n em> jours plus gros ou plus petit que la deuxième date donnée. $date1 = "2013/03/01";
$date2 = "2013/03/01";
$sign = "-";
$diff = 1;
$result = isDaysSmallerBigger($date1, $date2, $sign, $diff);
var_dump($result);
/**
* Note: this function is only supported in php 5.3 or above
* 1. If $date1 - $date2 = $sign $diff days, return true;
* 2. If $date1 equals $date2 and $diff euqals 0, whether $sign is "+" or "-", return true
* 3. Else return false;
* @param unknown_type $date1
* @param unknown_type $date2
* @param string $sign: "-": $date1 < $date2; "+": $date1 > $date2;
* Besides if $diff is 0, then both "-" and "+" means $date1 === $date2;
* @param integer $diff: date difference between two given dates
*/
function isDaysSmallerBigger($date1, $date2, $sign, $diff) {
$dateTime1 = new DateTime($date1);
$dateTime2 = new DateTime($date2);
$interval = $dateTime2->diff($dateTime1);
$dayDiff = $interval->format('%a');
$diffSign = $interval->format('%R');
if((int)$dayDiff === (int)$diff) {
// Correct date difference
if((int)$diff !== 0) {
// Day difference is not 0
if($diffSign === $sign) {
return true;
} else {
return false;
}
} else if((int)$diff === 0) {
// Day difference is 0, then both given "+" and "-" return true
return true;
}
} else {
// Incorrect date difference
return false;
}
}