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 :

date


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 69
    Par défaut date
    bonjour,

    Lors d'une insertion je dois faire la difference entre la valeur que j'obtien moins la valeur du mois précedent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Insert into table1
    Select date , T2.champ1-T1-champ1
    from table1 T1, table2 T2
    Where ...
    et c'est la que je bloque pour dire que je veux que le mois de la table1 soit le mois précedent à la table2

    where month(T1.date)=month(T2.date)-1 ça n'a pas l'air de fonctionner .
    est ce que quelqu'un aurais une idée merci

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Ouais on peut avoir des idées mais il nous faut plus d'infos telles que ton SGBD, sa version, etc.

  3. #3
    Membre éprouvé
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Par défaut Attention aux années
    Bonjour,
    Tes champs date contiennent des années et donc la syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where month(T1.date)=month(T2.date)-1
    donnera des résultats erronées et en plus il ne faut pas oublier le mois 1 et le mois 12.

    Une des manières de faire sous SQL Server par exemple est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where month(T1.date)=month(dateadd(month, -1, T2.date))
    Quand on parle mois, il faut toujours se rappeler les années

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 69
    Par défaut
    Merci,
    mais dans ta reponse à quoi correspond le month:

    where month(T1.date)=month(dateadd(month, -1, T2.date))

  5. #5
    Membre émérite
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Par défaut
    le month permets d'ajouter ou de retirer le nombre indiquer de moi

    ex :

    dateadd(month,1,'01/08/2005') donne 01/09/2005
    dateadd(month,-1,'01/08/2005') donne 01/07/2005
    dateadd(day,5,'01/08/2005') donne 06/08/2005

    sinon tu peux faire ca aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE (DATEPART(month, T2.Date) - DATEPART(month, T1.Date) = 1)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 69
    Par défaut
    Merci à tous
    jer vais tester tout ça et je vous dis si ça marche

  7. #7
    Membre éprouvé
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Par défaut Erreur chez Hulk
    Bonjour,
    Hulk, fait attention ta syntaxe ne tient pas compte de l'année , elle fait la différence juste entre les mois et ça risque d'induire en erreur toujours.

    Pour mon month, il est là à cause du mois 12 et du mois 1. L'idée est que je dois retirer un mois de la date de la table 2 et tomber sur le mois de la date de la table 1. La syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where month(T1.date)=month(dateadd(month, -1, T2.date))
    évite les calculs et les if ou les cases pour éviter le cas du mois 12 et le mois 1 de l'année suivante et aussi pour éviter de suivre l'année car elle est déjà incluse dans le calcul de dateadd

Discussions similaires

  1. Réponses: 11
    Dernier message: 23/07/2002, 14h33
  2. soustraire deux dates ?
    Par joejoe dans le forum SQL
    Réponses: 2
    Dernier message: 19/07/2002, 15h53
  3. Generation d'evenements a une date precise
    Par pascalzzz dans le forum MFC
    Réponses: 2
    Dernier message: 04/06/2002, 15h21
  4. Réponses: 3
    Dernier message: 06/05/2002, 18h24
  5. Réponses: 3
    Dernier message: 19/04/2002, 00h11

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