Problème :
Obtenir les enregistrements de la table de base de données [membre] qui tombe au cours du mois précédent, en fonction de la date_created champ.
Solution :
Pour récupérer efficacement et précisément les enregistrements du mois dernier, nous devons éviter certains pièges et employer l'approche suivante :
Utilisez le filtrage de plages exclusives :
Au lieu d'utiliser des plages inclusives (par exemple, l'opérateur BETWEEN), utilisez un filtrage de plage exclusif avec l'option > et &Lt ; opérateurs. Cela garantit que les enregistrements du premier et du dernier jour du mois sont inclus.
Calculer les limites du mois :
Déduisez le début du le mois précédent et le début du mois en cours à l’aide des fonctions de date appropriées. Cela évite les problèmes potentiels causés par des plages de limites supérieures inclusives.
Exemple de requête :
DECLARE @startOfCurrentMonth DATETIME SET @startOfCurrentMonth = DATEADD(month, DATEDIFF(month, 0, CURRENT_TIMESTAMP), 0) SELECT * FROM Member WHERE date_created >= DATEADD(month, -1, @startOfCurrentMonth) AND date_created < @startOfCurrentMonth
Cette approche garantit que les indices sont utilisés, les données la corruption est évitée et les enregistrements corrects sont récupérés dans le délai spécifié.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!