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

Développement SQL Server Discussion :

Case when avec date


Sujet :

Développement SQL Server

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 14
    Par défaut Case when avec date
    Bonjour,

    Je bloque sur un problème de syntaxe depuis une bonne heure.
    Voila le souci, je récupère des données dans une case Oracle et je souhaiterais remplacer la valeur d'un champ date par une autre valeur.
    En effet, le champ date en question a pour valeur 11/9/0010, ce qui ne passe pas sous Sql Server. Si on a cette valeur, je souhaite mettre 01/01/1754 à la place (qui est la valeur min sous SQL Server si je ne me trompe pas).

    J'ai donc mis ça dans ma requête :
    CASE CHANGED_ON WHEN '11/9/0010' THEN '01/01/1754 ELSE CHANGED_ON END AS CHANGED_ON
    Mais ça ne fonctionne pas. J'ai essayé avec des CAST(), des DATE(), mais impossible d'arriver à quelque chose de fonctionnel.

    En espérant que quelqu'un ait une idée

    Merci d'avance.

  2. #2
    Membre émérite Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Par défaut
    Bonjour,

    Je doute que ce soit l'origine de vos soucis, mais il manque une quote dans la syntaxe que vous avez donnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CASE CHANGED_ON WHEN '11/9/0010' THEN '01/01/1754' ELSE CHANGED_ON END AS CHANGED_ON
    Pourriez-vous donner le code et le message d'erreur fournis par SQL Server ?

    Cordialement,

    Arkhena

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 14
    Par défaut
    En effet le problème n'était pas là, à force de modifier ma requête j'ai du oublier de la remettre..
    Le message d'erreur est le suivant (pour la version de la requête ci-dessus) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ErrorSource : OraOLEDB
    ErrorMessage : incosistent datatypes: expected DATE got CHAR

  4. #4
    Membre émérite Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Par défaut
    Bonjour,

    là, c'est plus clair. D'après la doc ici (http://msdn.microsoft.com/fr-fr/library/ms187928.aspx), vous allez pouvoir utiliser la fonction CONVERT ( data_type [ ( length ) ] , expression [ , style ] ).

    Je ferai un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CASE CHANGED_ON WHEN '11/9/0010' THEN CONVERT(date,'01/01/1754',103) ELSE CONVERT(date,CHANGED_ON,103) END AS CHANGED_ON
    Les données de votre colonne changed_on du départ sont de quel type ?

    Cordialement,

    Arkhena

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 14
    Par défaut
    Merci pour votre réponse.
    Il se trouve que j'avais mal analysé le contexte, car bien que travaillant sur une base SQL Server je vais récupérer les données dans une base Oracle.
    Du coup j'aurais pu essayer toutes les syntaxes possibles ça aurait eu du mal à fonctionner..

    Encore merci.

Discussions similaires

  1. CASE WHEN avec opérateur IN
    Par bossun dans le forum Langage SQL
    Réponses: 5
    Dernier message: 21/12/2009, 15h32
  2. Utilisation CASE WHEN avec une liste de valeurs
    Par mortimer.pw dans le forum PL/SQL
    Réponses: 5
    Dernier message: 26/03/2009, 12h50
  3. Sql CASE/WHEN avec HyperFile
    Par iniaina dans le forum HyperFileSQL
    Réponses: 5
    Dernier message: 21/11/2008, 10h37
  4. CASE WHEN avec un comportement anormal
    Par damien.sans dans le forum Oracle
    Réponses: 5
    Dernier message: 23/08/2006, 10h03
  5. case/when avec plusieurs valeurs pour le then
    Par Neo41 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 02/09/2005, 15h58

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