Je vais sauter le "pourquoi" pour la brièveté. Mais si vous voulez savoir, vous pouvez demander. Mais fondamentalement, ma première quête a été de trouver un moyen de compter toutes les lignes antérieures au mois en cours. J'ai trouvé la solution à ce qui fonctionne, ce qui est:Vous cherchez une requête mysql pour compter toutes les lignes précédentes au mois dernier
SELECT COUNT(*) FROM myTable
WHERE log_date < (CURDATE() - DAYOFMONTH(CURDATE()))
je soustrais seulement le nombre de jours qui a transpiré ce mois-ci et compte toutes les lignes avec la date de moins que le premier jour de ce mois.
Le prochain problème est que j'ai besoin de compter toutes les lignes avant le mois dernier. Je suppose que techniquement, je pourrais prendre mon résultat ci-dessus et interroger les résultats du mois dernier et soustraire les deux requêtes. Mais j'espérais une seule requête pour cela. J'ai variations essayé des deux versions ci-dessous:
SELECT COUNT(*) FROM myTable
WHERE log_date < ((CURDATE()- DAYOFMONTH(CURDATE())) - INTERVAL 1 MONTH)
et
SELECT COUNT(*) FROM myTable
WHERE log_date < DATE_SUB((CURDATE()- DAYOFMONTH(CURDATE())), INTERVAL 1 MONTH)
Ces deux approches ainsi que quelques variantes de ce que j'ai rendement essayé résultat de 0 quand je sais que la réponse devrait être 14.
Y at-il un moyen d'obtenir la réponse que je recherche dans une seule requête?
Merci.
Ceci est une approche intéressante. Cela m'a donné une idée. Puisqu'il n'y a aucun enregistrement avant une certaine date, je pourrais employer comme date de début quelque chose comme '2010-01-01' et alors juste devoir manipuler la date de fin. Mais puisque cela sera utilisé dans une boucle, je dois être capable de manipuler la date de fin avec une variable. C'est pourquoi l'utilisation d'une variante de «INTERVAL 1 MOIS» serait si utile. Je pourrais changer cet intervalle en n'importe quoi. – astonishedman