7
votes

Vérification si MySQL DateTime est plus âgé puis 1 jour de PHP maintenant ()

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


0 commentaires

4 Réponses :


3
votes

Pourquoi mélangez-vous des horaires PHP et MySQL?

Au lieu de cela, faites la comparaison directement dans MySQL:

Pour obtenir la date / heure actuelle dans MySQL, utilisez la fonction () . Vous pouvez comparer, par exemple, 2010-06-19 09:39:23 '

Ceci vérifierait si la date donnée (probablement dans une colonne) est âgée de plus de 24 heures.

S'il est absolument nécessaire de convertir un horodatage MySQL en horodatage UNIX, vous pouvez utiliser la fonction UNIX_TIMESTAMP () de MySQL () pour le faire.


1 commentaires

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.



28
votes

Pas de succès?

if(time() - strtotime("2010-06-19 09:39:23") > 60*60*24) {
   // timestamp is older than one day
}


1 commentaires

Merci beaucoup, ma tête ne semblait pas être vissée correctement aujourd'hui!



10
votes

Vous pouvez également faire:

SELECT * FROM my_table WHERE timestamp < NOW() - INTERVAL 1 DAY;


0 commentaires

0
votes

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;   
    }   
}


0 commentaires