2016-06-27 10 views
0

Ich möchte einige SQL-Abfragen schreiben, um mir Datensätze aus MySQL-Datenbank, die heute erstellt werden, Datensätze erstellt letzte Woche und Datensätze letzten Monat erstellt .. Die erste Abfrage erstellt Zeige mir Ergebnisse, die in den letzten 7 Tagen erstellt wurden (einschließlich heute). Wenn heute beispielsweise Sonntag ist, möchte ich Ergebnisse sehen, die von Montag bis Samstag erstellt wurden (nicht heute). Ebenso möchte ich in der zweiten Abfrage Datensätze sehen, die letzten Monat erstellt wurden (ausgenommen Aufzeichnungen dieses Monats). Wenn beispielsweise im Juni dieses Jahres ist, möchte ich Aufzeichnungen insql Abfrage zu zeigen Aufzeichnungen erstellt heute, letzte Woche und letzten Monat

Mai erstellt, um zu sehen
SELECT COUNT(*) AS stdtotal FROM `login` 
WHERE `account_created_date` > DATE_SUB(NOW(), INTERVAL 7 DAY) 

und die andere Abfrage ist

SELECT COUNT(*) AS stdtotal FROM `login` 
WHERE `account_created_date` > DATE_SUB(NOW(), INTERVAL 30 DAY) 

Beachten Sie, dass meine Tabellennamen login und der Spaltenname ist account_created_date vom Typ Datum.

+0

Was ist das Problem? Sie haben das Ergebnis wie erwartet. –

+0

Die erste Abfrage zeigt mir Ergebnisse, die in den letzten 7 Tagen erstellt wurden (einschließlich heute). Wenn heute beispielsweise Sonntag ist, möchte ich die Ergebnisse von Montag bis Samstag sehen. Ebenso möchte ich in der zweiten Abfrage Datensätze sehen, die letzten Monat erstellt wurden (ausgenommen Aufzeichnungen dieses Monats). Wenn dies beispielsweise Juni ist, möchte ich sehen, dass im Mai Datensätze erstellt werden. –

+0

Sie müssen also 'WHERE SomeDateField ZWISCHEN OneDate UND SecondDate' verwenden. –

Antwort

1

Fixieren Sie einfach die where Klauseln. Für die vorherigen 7 Tagen:

WHERE account_created_date >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND 
     account_created_date < CURDATE() 

für den vorangegangenen Monat

WHERE account_created_date >= DATE_SUB(DATE_SUB(CURDATE(), INTERVAL DAY(CURDATE) - 1 DAY), INTERVAL 1 MONTH) AND 
     account_created_date < DATE_SUB(CURDATE(), INTERVAL DAY(CURDATE) - 1 DAY) 

Dies ist der erste Tag des laufenden Monats berechnet und dann geht einen Monat vor, dass.

+0

Kannst du mir bitte helfen, die in diesem Monat erstellten Aufzeichnungen zu zeigen? –

+0

'WHERE account_created_date> = DATE_SUB (CURDATE(), INTERVALLTAG (CURDATE) - 1 TAG)'. –

Verwandte Themen