Ich möchte alle Datensätze zurückgeben, die in den letzten 30 Tagen zur Datenbank hinzugefügt wurden. Ich muss das Datum aus Anzeigegründen in MM / TT / JJ konvertieren.
create_date between DATE_FORMAT(curdate(),'%m/%d/%Y') AND (DATE_FORMAT(curdate() - interval 30 day,'%m/%d/%Y'))
Meine Anweisung beschränkt die Datensätze nicht auf die letzten 30 Tage - sie wählt alle Datensätze aus.
Kann mich jemand in die richtige Richtung weisen? Es fühlt sich an, als wäre ich nah dran.
Danke und eine tolle Woche.
quelle
DATE_FORMAT(create_date, '%m/%d/%Y')
... WHERE create_date BETWEEN (NOW() - INTERVAL 30 DAY) AND NOW()
DATE_FORMAT
Gibt eine Zeichenfolge zurück, sodass Sie in IhrerBETWEEN
Klausel zwei Zeichenfolgen verwenden , die nicht wie erwartet funktionieren.Konvertieren Sie stattdessen das Datum in Ihr Format in
SELECT
und führen Sie dasBETWEEN
für die tatsächlichen Daten aus. Beispielsweise,quelle
Sie können dies auch in MySQL schreiben -
FEST
quelle
Verwenden Sie diese Option für die Aktivität des aktuellen Datums und die vollständige Aktivität der letzten 30 Tage, da das SYSDATE an einem Tag variabel ist und der vorherige 30. Tag nicht die gesamten Daten für diesen Tag enthält.
quelle
Hier ist eine Lösung ohne
curdate()
Funktion, das ist eine Lösung für diejenigen , die verwenden ,TSQL
ich denke ,quelle