-
Intervalle de Dates
Bonjour,
Je soumet mon petit souci.
J'ai une requete SQL qui doit me récupérer une moyenne d'ecart au cours des 12 dernier mois. Pour cela j'utilise le critère suivant :
... date_debut BETWEEN SYSDATE - INTERVAL '11' MONTH AND SYSDATE ...
le probleme c'est qu'il va me donner la moyenne des ecarts entre le 05/10/04 et le 05/09/05 alors que je souhaiterais obtenir la moyenne entre le 01/10/04 et le 05/09/05 (date du jour).
Quelqu'un aurait-il une idée?
-
Ben je suppose qu'il faudra que tu fasse un - INTERVAL '4' DAY, avec le 4 obtenu par un format sur le sysdate - 1. J'ai pas la syntaxe sous la main désolé.
-
Euh oui mais le souci c'est que ca ne sera pas toujours 4 jours de différence, donc c'est vrai qu'il faudrait que je puisse obtenir la difference de jours entre la date systeme et le 1er jour du mois pour pouvoir ensuite la soustraire à la date 11 mois plus tot mais je ne sais pas du tout comment faire.
Une autre idée?
-
Salut,
pour les jours de différence:
cela te renvoie le jour actuel.
Pour passer au 1er, il faut donc retrancher day(current_date)-1 jours.
Bon courage
-
Le seul moyen de faire des calculs efficace sur les dates est d'ajouter à la base de données un calendrier comme indiqué dans cet article :
http://sqlpro.developpez.com/cours/gestiontemps/
A +
-
Bonjour,
vous pouvez aussi concatener '01/'+datepart(le mois)+'/'+datepart(année) etc
Exemple:
where dat_maj between '01/'+convert(varchar(2),datepart(MM, getdate()))+'/'+convert(varchar(4),datepart(yy, getdate())) and getdate()
-
Oui si le SGBDR support DatePart, c'est une excellente solution :D