Heim  >  Fragen und Antworten  >  Hauptteil

Wie verwende ich UNIX_TIMESTAMP, um die 7 Tage vor den letzten 7 Tagen abzurufen?

Ich verwende den folgenden Code, um Ergebnisse aus einem MySQL-Feld namens registered_at zurückzugeben, damit ich die Benutzer abrufen kann, die sich in den letzten 7 Tagen auf der Website registriert haben, und es funktioniert einwandfrei:

andWhere('registered_at > UNIX_TIMESTAMP(NOW() - INTERVAL 7 DAY)')

Mein Problem ist, dass ich auch die Benutzer abrufen muss, die sich in den letzten 7 Tagen auf der Website registriert haben. Die Logik besteht darin, die registrierten Benutzer der letzten 2 Wochen anzuzeigen, damit ich als Nächstes die Differenz zwischen diesen 2 Wochen als Prozentsatz ausgeben kann, zum Beispiel: 10 % mehr Benutzer diese Woche.

Ich habe etwas Ähnliches versucht:

andWhere('registered_at > UNIX_TIMESTAMP((NOW() - INTERVAL 14 DAY) - (NOW() - INTERVAL 7 DAY))')

Aber kein Erfolg.

P粉549412038P粉549412038264 Tage vor378

Antworte allen(1)Ich werde antworten

  • P粉955063662

    P粉9550636622024-01-30 00:54:09

    您可以使用:

    andWhere('registered_at > UNIX_TIMESTAMP(NOW() - INTERVAL 14 DAY)')
    andWhere('registered_at < UNIX_TIMESTAMP(NOW() - INTERVAL 7 DAY)')

    这将生成获取过去 14 天的 registered_at 的查询,但也会修剪过去 7 天的 registered_at,因此您将保持 7-14 天的间隔。

    如果我们将其转换为“原始”SQL 查询,它将是:

    SELECT 
      * 
    FROM 
      users 
    WHERE 
      registered_at > UNIX_TIMESTAMP(NOW() - INTERVAL 14 DAY)' 
      AND registered_at < UNIX_TIMESTAMP(NOW() - INTERVAL 7 DAY)'

    Antwort
    0
  • StornierenAntwort