Je souhaite renvoyer tous les enregistrements qui ont été ajoutés à la base de données au cours des 30 derniers jours. J'ai besoin de convertir la date en mm / jj / aa à des fins d'affichage.
create_date between DATE_FORMAT(curdate(),'%m/%d/%Y') AND (DATE_FORMAT(curdate() - interval 30 day,'%m/%d/%Y'))
Ma déclaration ne parvient pas à limiter les enregistrements aux 30 derniers jours - il sélectionne tous les enregistrements.
Est-ce que quelqu'un peut-il me montrer la bonne direction? J'ai l'impression d'être proche.
Merci et bonne semaine.
la source
DATE_FORMAT(create_date, '%m/%d/%Y')
... WHERE create_date BETWEEN (NOW() - INTERVAL 30 DAY) AND NOW()
DATE_FORMAT
renvoie une chaîne, vous utilisez donc deux chaînes dans votreBETWEEN
clause, ce qui ne fonctionnera pas comme prévu.Au lieu de cela, convertissez la date dans votre format dans le
SELECT
et faites leBETWEEN
pour les dates réelles. Par exemple,la source
Vous pouvez également écrire ceci dans mysql -
FIXÉ
la source
Pour l'activité de date actuelle et l'activité complète des 30 jours précédents, utilisez ceci, car le SYSDATE est variable dans un jour, le 30ème jour précédent n'aura pas toutes les données pour ce jour.
la source
Voici une solution sans utiliser de
curdate()
fonction, c'est une solution pour ceux qui utilisentTSQL
je supposela source