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

MS SQL Server Discussion :

problème avec la fonction DATEADD


Sujet :

MS SQL Server

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2005
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 1
    Points : 1
    Points
    1
    Par défaut problème avec la fonction DATEADD
    salut,

    Je voudrai passer en 1er paramètre le champs d'une colonne mais SQL serveur dit que ma colonne n'est pas une option de dateadd reconnue.

    exemple table essai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DateTest        Period       NbPeriode
    01/01/2005     m             2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * from essai where getdate()>dateadd(essai.Period, NbPeriode, DateTest)
    merci de m'aider.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 74
    Points : 84
    Points
    84
    Par défaut
    HEllo,

    dateadd s'utilise avec en premier paramètre le type de "temps" que tu veux ajouter comme par exemple day , minutes , hours etc..

    en fait ce sont des mots clés prédéfinis / réservé par T SQL non des varchar comme ce que tu ramènes de ta requete .. D'ou le fait qu'il n'aime pas..

    Sinon ma première idée pour faire ce que tu veux faire n'est ni très élégante , ni très performante je pense ..

    ca serait de faire un UNION en fait :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Select * from essai 
    WHERE DATEDIFF(m,GEtDate(),DateADD(m,essai.nb,essai.DateM))< 0 and essai.periode='m'
    UNION 
    Select * from essai 
    WHERE DATEDIFF(m,GEtDate(),DateADD(d,essai.nb,essai.DateM))< 0 and essai.periode='d'
    etc... autant de select que de types de périodes..

    est ce que quelqu'un sait si ca serait possible avec un joli CASE ? ..

    mais bon dès fois..tant que ca marche ;)

  3. #3
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 566
    Points
    19 566
    Billets dans le blog
    25
    Par défaut
    Le 1e paramètre ne peut être une variable. C'est la phase de parser qui vous ennuie.

    Contournez le problème en créant votre sql et en l'exécutant via sp_executesql

Discussions similaires

  1. [AC-2007] Problème avec la fonction DateAdd pour décompter des mois
    Par lio33 dans le forum VBA Access
    Réponses: 2
    Dernier message: 04/05/2012, 09h57
  2. Problème avec la fonction findfirst ()
    Par Angelico dans le forum Windows
    Réponses: 3
    Dernier message: 05/08/2004, 20h40
  3. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24
  4. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04

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