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 :

SP et datetime


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 61
    Par défaut SP et datetime
    bonjour a tous,

    j'ai remarqué avec une procédure stocké qu'elle ne renvoyait pas le même résultat selon que je formatte ma variable en datetime ou en nvarchar.

    voici ma procédure stockée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    exec sp_executesql N'
    SELECT  DISTINCT
                             CASE WHEN VOITURE.nom = '' OR VOITURE.nom IS NULL THEN RTRIM(VOITURE.nom) ELSE RTRIM(VOITURE.nom) END + ' ' + RTRIM(VOITURE.marque) AS identite_VOITURE, 
                             (DATEDIFF(MONTH,CONVERT(DATETIME, VOITURE.datefabrication, 103), GETDATE()) - CASE WHEN DAY(CONVERT(DATETIME, datefabrication, 103)) = DAY(GETDATE())  THEN 1 ELSE 0 END) / 12 AS age_VOITURE, 
                             VOITURE.carrosserie AS carrosserie_VOITURE, PARAM_SERVICE.Libelle AS service_VOITURE, 
                             PARAM_SERVICE.Code AS codeservice_VOITURE, EMPLACEMENT.noEMPLACEMENT AS EMPLACEMENT_VOITURE, EMPLACEMENT.typeEMPLACEMENT AS typeEMPLACEMENT_VOITURE, 
                             RTRIM(MECANICIEN.nom) + ' ' + RTRIM(MECANICIEN.marque) AS MECANICIEN_VOITURE, RESERVATION.motif AS REPARATION_VOITURE, 
                             RESERVATION.dateadmission AS dateentree_VOITURE,REPARATION.heuredebut AS dateREPARATION_VOITURE, RESERVATION.datesortie AS datesortie_VOITURE, 
                             CADRAN.idCADRAN AS CADRAN_VOITURE, PARAMSPECIALITE.nomspecialite, 
                             CASE WHEN RESERVATION.modeentree LIKE '%Hospitalisation%' THEN 'Hospi' ELSE CASE WHEN RESERVATION.modeentree LIKE '%Ambulatoire%' THEN 'Ambu' ELSE
                             CASE WHEN RESERVATION.modeentree LIKE '%urgence%' then 'Urg' else CASE WHEN RESERVATION.modeentree LIKE '%externe%' then 'Ext' end END END END AS mode
    FROM            CADRAN INNER JOIN
                             MECANICIEN ON CADRAN.idnchir = MECANICIEN.idnational INNER JOIN
                             RESERVATION ON CADRAN.idCADRAN = RESERVATION.idCADRAN INNER JOIN
                             PARAMSPECIALITE ON RESERVATION.idspecialite = PARAMSPECIALITE.idspecialite left outer  JOIN
                             REPARATION ON RESERVATION.idreservation = REPARATION.idreservation INNER JOIN
                             VOITURE ON CADRAN.ipp = VOITURE.IPP LEFT OUTER JOIN
                             PLANNING ON RESERVATION.idreservation = PLANNING.idreservation INNER JOIN
                             EMPLACEMENT ON PLANNING.idEMPLACEMENT = EMPLACEMENT.idEMPLACEMENT INNER JOIN
                             PARAM_SERVICE ON EMPLACEMENT.idservice = PARAM_SERVICE.IdService
    WHERE        (CADRAN.dateentree <= '23/03/2011 08:00') AND (CADRAN.datesortie >= '23/03/2011 08:00') AND (PLANNING.dateheuredebut <= '23/03/2011 08:00') AND 
                             (PLANNING.dateheurefin >= '23/03/2011 08:00') AND (RESERVATION.idreservation NOT IN
                                 (SELECT        RESERVATION_1.idreservation
                                   FROM            RESERVATION AS RESERVATION_1 INNER JOIN
                                                             RESERVATION_STATUT ON RESERVATION_1.idreservation = RESERVATION_STATUT.idreservation INNER JOIN
                                                             STATUT ON RESERVATION_STATUT.idstatut = STATUT.idstatut
                                   WHERE        (STATUT.codestatut = 'annulee') AND (STATUT.typestatut = 'us')))
    AND   EXISTS
      (SELECT MAX(dateREPARATION)
       FROM REPARATION AS t
       WHERE t.idreservation = RESERVATION.idreservation)
    ORDER BY identite_VOITURE',N'@parameter1 datetime',@parameter1='23/03/2011 08:00'
    et donc si je remplace par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ]@parameter1 nvarchar(50)
    cela me donne des résultats différents, a savoir que j'ai 106 ligne avec datetime et 153 avec le nvarchar.

    moi y'en a pas compris T_T.

  2. #2
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    Bonjour

    ceci n'a aucun sens:
    AND EXISTS
    (SELECT MAX(dateREPARATION)
    FROM REPARATION AS t
    WHERE t.idreservation = RESERVATION.idreservation)
    Autant faire un SELECT * ou remplacer le EXISTS par un INNER JOIN...


    Que voulez vous filtrer exactement ?

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

Discussions similaires

  1. Recuperer la date sans l'heur dans un champ datetime
    Par bob33 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 22/06/2010, 12h59
  2. recuperer heure et minute de datetime
    Par nora_ora dans le forum Langage SQL
    Réponses: 4
    Dernier message: 08/10/2003, 12h47
  3. Convertir un datetime to mm.yyyy ?
    Par Nadaa dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 29/09/2003, 15h45
  4. Réponses: 3
    Dernier message: 23/09/2003, 09h12
  5. CAST DATETIME ----> SMALLDATETIME
    Par Guizz dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/06/2003, 12h07

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