SQL - requête sur les 15 derniers jours

Résolu/Fermé
Furasque Messages postés 38 Date d'inscription mercredi 4 février 2009 Statut Membre Dernière intervention 7 mai 2009 - 7 mai 2009 à 16:08
Furasque Messages postés 38 Date d'inscription mercredi 4 février 2009 Statut Membre Dernière intervention 7 mai 2009 - 7 mai 2009 à 18:23
Bonjour,

J'utilise une BD SQL.

J'aimerai retourner les résultats d'une requête pour les 15 derniers jours :

Je précise :
j'ai un champ "date" au format suivant : jj/mm/aaaa hh:mm:ss
Le résultat important est la moyenne du champ "attribute" par jour.

ce que je faisais jusqu'alors :

SELECT DATEPART(year, date), DATEPART(month, date), DATEPART(day, date), itemName, AVG(attribute)
FROM ma_table
WHERE (attribute LIKE 'xxx%')
AND (MONTH(itemDate) = MONTH(GETDATE()))
AND (YEAR(itemDate) = YEAR(GETDATE()))
AND (DAY(itemDate) BETWEEN DAY(GETDATE() - 15) AND DAY(GETDATE()))
AND (itemName = 'x.x.x.x')
GROUP BY itemName, DATEPART(year, date), DATEPART(month, date), DATEPART(day, date)


Sauf que : si nous sommes le 6 du mois, à cause du MONTH(GETDATE()), sql ne me retournera aucun résultat.
Or je voudrais afficher les résultats pour les 6 derniers jours du mois n et les 9 précédents du mois n-1 (donc des 15 derniers jours).

La tête dans le guidon, je sèche. Je n'ai plus d'idée pour tenter de remédier à ce problème!
J'espère que vous pourrez m'aider, par avance merci.

Furasque
A voir également:

4 réponses

Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 384
7 mai 2009 à 17:43
Bonjour Furasque,

Je pense que ton ordre sql devrait être le suivant:
SELECT DATEPART(year, date), DATEPART(month, date), DATEPART(day, date), itemName, AVG(attribute)
FROM ma_table
WHERE (attribute LIKE 'xxx%')
AND itemDate between GETDATE() - 15 and GETDATE()
AND (itemName = 'x.x.x.x')
GROUP BY itemName, DATEPART(year, date), DATEPART(month, date), DATEPART(day, date)


A plus
1
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
7 mai 2009 à 16:31
Bonjour,

Peut-être pouvez-vous utiliser ceci en adaptant de peu

SELECT SUBDATE('1998-01-02', INTERVAL 31 DAY);
0
Furasque Messages postés 38 Date d'inscription mercredi 4 février 2009 Statut Membre Dernière intervention 7 mai 2009 1
7 mai 2009 à 17:36
Merci de votre réponse!
Cependant ça n'a pas l'air de fonctionner sous SQL server
0
Furasque Messages postés 38 Date d'inscription mercredi 4 février 2009 Statut Membre Dernière intervention 7 mai 2009 1
7 mai 2009 à 18:23
Christounet,
je pensais que le format de ma date empêcherait cela mais non!
Ca fonctionne, merci bcp!
0