2010-11-21 15 views
6

Ich habe eine Datetime-Spalte namens 'last_login'.MySQL Wo ist das Datum größer als ein Monat?

Ich möchte meine Datenbank abfragen, um alle Datensätze auszuwählen, die sich nicht innerhalb des letzten Monats angemeldet haben. Wie mache ich das?

Das ist, was ich habe zur Zeit:

$query = $this->query("SELECT u.id, u.name, u.email, u.registered, g.name as group_name FROM `:@users` AS u LEFT JOIN `:@groups` AS g on u.group_id = g.id WHERE u.last_login = ...... LIMIT {$limit_start}, {$limit_end}"); 

: @ = Datenbank-Präfix

Antwort

18

Try date_sub

where u.last_login < date_sub(now(), interval 1 month) 

(ähnlich wie bei der ersten Antwort, aber in meinem Kopf ist es „natürlich“ positive ganze Zahlen zu verwenden) mit

+0

sollte dies ">" richtig sein – Lamis

+1

Wie so sein? @JasonS möchte alle Benutzer finden, die sich im letzten Monat nicht am System angemeldet haben. Das bedeutet, dass ihr letztes Anmeldedatum vor einem Monat liegt. Daher möchten wir Datensätze auf diejenigen beschränken, die eine last_login vor (d. H. Weniger als) dem Datum vor einem Monat von jetzt an() haben. Mit> geben Sie nur die Benutzer an, deren letzte Anmeldung im letzten Monat stattgefunden hat. –

10

Sie date_add kombiniert mit now verwenden:

...where u.last_login < date_add(now(), interval -1 month) 

Natürlich, da beide MySQL-spezifisch sind Dies beschränkt Sie auf MySQL-Backends. Alternativ können Sie mit PHP herausfinden, was das Datum vor einem Monat war (ich bin keine PHP-Person, aber ich schätze, DateTime::sub würde dabei helfen) und dann dieses Datum in Ihre Abfrage auf die normale Weise einschließen, die Sie würden anderes Datum/Zeit-Feld.

-1

matthewh fast richtig war, mit Ausnahme der > habe sein sollen ein richtiger.

where u.last_login > date_sub(now(), interval 1 month)

+0

Sie haben recht, es sollte> – Lamis

+0

sein Ich stimme nicht zu, mit> werde ich Benutzern geben, die letzte Anmeldung war größer als das Datum vor einem Monat heute - das heißt, sie haben sich im letzten Monat angemeldet. –

Verwandte Themen