Comment récupérer les enregistrements du mois précédent dans SQL Server
Lorsque vous travaillez avec une table de base de données contenant un champ d'horodatage, il est souvent nécessaire pour récupérer des enregistrements pour une période spécifique, telle que le mois précédent. SQL Server propose différentes méthodes pour y parvenir.
Le problème :
Vous devez extraire les enregistrements en fonction d'une colonne date_created de la table membre où les enregistrements se situent dans la le mois précédent. Par exemple, si la date actuelle est le 3 janvier 2010, vous devrez récupérer les enregistrements du 1er décembre 2009 au 31 décembre 2009.
Le défi :
Certaines solutions existantes rencontrent des problèmes pour ignorer les indices ou sélectionner des données en dehors de la plage prévue.
Le Approche correcte :
Pour éviter ces pièges, l'approche recommandée utilise la comparaison des inégalités pour garantir une récupération précise des données. Voici la requête corrigée :
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 méthode calcule le début du mois en cours et utilise la comparaison des inégalités pour inclure les enregistrements du mois précédent uniquement. En utilisant des indices et en évitant les comparaisons inutiles, cette approche fournit des résultats efficaces et précis.
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!