IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Intervalle de Dates


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 20
    Par défaut 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?

  2. #2
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 890
    Par défaut
    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é.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 20
    Par défaut
    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?

  4. #4
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    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

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 009
    Billets dans le blog
    6
    Par défaut
    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 +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Invité de passage
    Inscrit en
    Septembre 2005
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 1
    Par défaut
    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()

  7. #7
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 890
    Par défaut
    Oui si le SGBDR support DatePart, c'est une excellente solution

Discussions similaires

  1. MYSQL - requete avec un intervale de DATE
    Par mastronic dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/08/2006, 17h25
  2. VB .Net: les intervalles de dates dans ACCESS ?
    Par AzertyH dans le forum Windows Forms
    Réponses: 10
    Dernier message: 15/05/2006, 10h35
  3. [debutant] Intervalles de dates
    Par dormouse dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 29/03/2006, 20h48
  4. calculer un intervalle de dates
    Par vodevil dans le forum Modules
    Réponses: 3
    Dernier message: 16/01/2006, 21h04
  5. selection intervalle de dates
    Par jax69 dans le forum Access
    Réponses: 2
    Dernier message: 22/06/2005, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo