Rechercher : dans
Par :

SQL - requête sur les 15 derniers jours

Dernière réponse le 7 mai 2009 à 18:23:31 Furasque, le 7 mai 2009 à 16:08:02 
 Signaler ce message aux modérateurs

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
Configuration: Windows XP
Firefox 3.0.10

Meilleures réponses pour « SQL requête sur les 15 derniers jours » dans :
[PHP] Dernier jour du mois / Nombre de jours dans le mois VoirSoient $m le numéro du mois en question et $y l'année. La fonction date() permet d'afficher directement le nombre de jours dans le mois avec le caractère "t" :
SQL - Mise à jour d'informations VoirLe SQL permet la modification d'une table par un utilisateur (pour peu qu'il ait les droits suffisants...). La modification d'une table consiste à: ajouter des tuples modifier des tuples existants ou bien supprimer des tuples Insertion de...
Le langage SQL VoirQu'appelle-t-on SQL? SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage de définition de données (LDD, ou en anglais DDL Data Definition Language), un langage de manipulation de données (LMD, ou en anglais DML,...
SQL - Sous-requêtes VoirExpression des sous-requêtes Effectuer une sous-requête consiste à effectuer une requête à l'intérieur d'une autre, ou en d'autres termes d'utiliser une requête afin d'en réaliser une autre (on entend parfois le terme de requêtes en...

1

NookZ, le 7 mai 2009 à 16:31:10

Bonjour,

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

SELECT SUBDATE('1998-01-02', INTERVAL 31 DAY);

Répondre à NookZ

2

Furasque, le 7 mai 2009 à 17:36:54

Merci de votre réponse!
Cependant ça n'a pas l'air de fonctionner sous SQL server

Répondre à Furasque

3

Christounet, le 7 mai 2009 à 17:43:02

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 On se donne des souvenirs quand on se quitte.
(Marcel Achard)

Répondre à Christounet

4

 Furasque, le 7 mai 2009 à 18:23:31

Christounet,
je pensais que le format de ma date empêcherait cela mais non!
Ca fonctionne, merci bcp!

Répondre à Furasque