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 :

[SQL Server] Selectionner juste l'année d'un champ date


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 27
    Points : 23
    Points
    23
    Par défaut [SQL Server] Selectionner juste l'année d'un champ date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "SELECT DISTINCT c_date_acci FROM dossier WHERE c_date_acci <> '' ORDER BY c_date_acci"
    Là, pour l'instant, j'ai la date entière.
    Le but est que j'ai la liste des différentes années présentes dans la table et sans doublon.

    ex:
    1997
    1998
    2000
    2001
    2005
    2006


    Y a t'il moyen???
    merci :-)

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut Re: Selectionner juste l'année d'un champ date
    Citation Envoyé par calison3
    Y a t'il moyen???
    Oui, cela dépend de ton SGBD, les fonctions n'étant pas toujours normées ... info à nous donner donc.

    Solution propre à Oracle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DISTINCT TO_CHAR(maDate, 'YYYY') 
      FROM MaTable;

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 27
    Points : 23
    Points
    23
    Par défaut
    Ah je ne savais pas.
    Mon SGBD est SQL Server

    Qqun connait la fonction?
    merci

  4. #4
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    cf http://sql.developpez.com/sqlaz/fonctions/#L1.7

    Donc certainement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DISTINCT YEAR(maDate)
      FROM MaTable;

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 27
    Points : 23
    Points
    23
    Par défaut
    j'en suis à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT DISTINCT YEAR(c_date_acci) FROM dossier WHERE c_date_acci <> ''

    Mais comment je fais pour ordonner les années par ordre croissant??

    Cela ne marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT DISTINCT YEAR(c_date_acci) FROM dossier WHERE c_date_acci <> '' ORDER BY c_date_acci
    et l'erreur c'est:

    "ORDER BY items must appear in the select list if SELECT DISTINCT is specified."


    merci

  6. #6
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Tu ne peux faire un ORDER BY qu'avec les champs du SELECT, c'est exactement ce que te dis le message .
    Comme tu as appliqué une fonction sur le champ c_date_acci, tu dois également appliquer cette fonction sur ce champ dans le ORDER BY :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT YEAR(c_date_acci) 
      FROM dossier 
     WHERE c_date_acci <> '' 
     ORDER BY YEAR(c_date_acci);
    En passant, il est préférable d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE c_date_acci IS NOT NULL
    plutôt que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE c_date_acci <> ''

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/07/2009, 21h47
  2. [SQL Server 05] Problème avec le format de la date
    Par Monkey_D.Luffy dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 22/05/2008, 09h02
  3. [SQL Server 2005] Manipuler les positions d"un champ
    Par Supergilga dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 03/07/2007, 08h51
  4. [SQL Server 2000] inverser le signe d'un champ money
    Par sephiroth84 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 29/08/2005, 14h55
  5. Réponses: 3
    Dernier message: 10/08/2005, 11h11

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