2011-08-24 4 views
1

Je suis en train de mettre en place une fonction d'activités récentes où j'obtiens l'activité tout utilisateur de cette semaine. Cependant, je ne sais pas comment obtenir toute l'activité de cette semaine car j'ai besoin de comparer les dates entre maintenant et une semaine avant maintenant. Pouvez-vous me dire comment je peux faire ça? J'utilise une base de données MySQL pour contenir toutes les informations. J'ai les tables, aime, suit, commentaires et messages. Je devrais évidemment comparer les dates pour obtenir toutes les informations de toutes les tables.Comment comparer les dates en PHP

J'utilise cette méthode lorsque j'insère des dates dans ma base de données MySQL.

function uk_date() { 
     $sign = "-"; 
     $h = "0"; 
     $dst = "true"; 
     if ($dst) { 
      $daylight_saving = date('I'); 
      if ($daylight_saving){ 
       if ($sign == "-"){ $h=$h-1; } 
       else { $h=$h+1; } 
      } 
     } 
     $hm = $h * 60; 
     $ms = $hm * 60; 
     if ($sign == "-"){ $timestamp = time()-($ms); } 
     else { $timestamp = time()+($ms); } 
     return $gmdate = gmdate("d/m/Y g:i:s A", $timestamp); 
    } 

En outre, le champ « date » dans mon db n'est pas un horodatage, il est une chaîne produite à partir de la méthode uk_date() ci-dessus. C'est là que je ne sais pas comment comparer les dates.

+1

Avez-vous regardé la fonction strtotime? –

Répondre

1
select * from table where datetime_field > now() - interval 7 day 
+0

Le champ n'est pas un horodatage, c'est une chaîne générée par la méthode uk_date(). –

+0

Mais les suggestions sont - ce ne devrait pas être une date "générée". Stockez dans DB autant de données que possible, et si vous parlez de dates, la chose la plus simple est toujours un horodatage unix, car il est géré nativement par la plupart des API du monde ... (ok, je sais que nous pouvons discuter de ce fait, mais ce n'est pas le point) –

+0

@ XcodeDev; Oui, mais il me semble qu'il fait des choses trop compliquées. –

1

ne comprends pas exactement, pourquoi ce besoin d'être si compliqué, pourquoi travailler avec daylight_saving etc ...

Est-il possible que vous stockez simplement la base de données le résultat de l'appel à temps()? Ensuite, vous aurez unix-timestamp, et cela est facilement comparable avec n'importe quel autre timestamp unix désiré. Tout arithmétique est trivial alors ... ai-je raison?

+0

+1 Pour utiliser UNIX au lieu de GMT dans la base de données. Son briquet (en performance), est également plus facile à utiliser. – toopay

+0

@yosh kemu Veuillez vérifier la question mise à jour. –

+0

Désolé, je ne peux pas être d'accord avec ça. Mémoriser tout "d/m/Y g: i: s A" est la proie d'un problème. Vraiment, cela ne vous donne aucun avantage, et beaucoup de contre - mais bien sûr c'est mon opinion personnelle. NE PAS stocker les dates "générées". –