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 :

Problème requete sql


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 58
    Par défaut Problème requete sql
    Bonjour,

    J'ai un souci avec ma requete sql dans laquelle la partie comparaison de date pose problème CONVERT(varchar, I_Birth_D, 103) = '".$date."'
    La variable $date est une variable dans laquelle je stocke juste la parie date de ma datetime $Date_Naiss.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    list($y,$m,$d)= split('[/.-]',$Date_Naiss);
    $date=substr($d,0,2).'/'.$m.'/'.$y; //format dd/mm/yyyy
     
    $sql = "SELECT User_Emp_Nb,I_Birth_D, CONVERT(varchar, I_Birth_D, 103) ";
    $sql.= "FROM allegro_user, allegro_user_infos ";
    $sql.= "Where User_Emp_Nb = I_Emp_Nb and CONVERT(varchar, I_Birth_D, 103) = '".$date."' ";
    Merci de m'aider à résoudre ce problème qui me prend la tête depuis quelques jours.

  2. #2
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Bonjour,

    Pour votre variable transformez là au format ISO YYYMMDD. Quoi que la comparaison s'effectuera quand même ... à voir ..

    Pour votre requête avec cette conversion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ...
    Where User_Emp_Nb = I_Emp_Nb and CONVERT(varchar, I_Birth_D, 112) = '".$date."' ";
    Dans ce 1er cas si vous avez un index sur votre colonne I_Birth_D, vous ne pourrez pas l'utiliser. L'expression n'est pas sargable. Vous pouvez également faire ceci en bornant votre recherche sur la colonne date:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ...
    Where User_Emp_Nb = I_Emp_Nb and  I_Birth_D BETWEEN '20100716 00:00:00' AND '20100716 23:59:59';
    Il faudra transformer votre variable $date dans ce cas.

    ++

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Par défaut
    bonjour,

    Quel est le problème ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 58
    Par défaut
    Bonjour, J'ai modifié un peu mon code mais cela ne marche toujours pas, j'ai pas trop compris pourquoi vous me conseillez de convertir le champs 'I_Birth_D' sous une autre forme puisque le CONVERT(varchar, I_Birth_D, 103) et le variable date on exactement le même format (dd/mm/yyyy), et pour votre information il n'y a pas d'index sur I_Birth_D.
    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $date=substr($Date_Naiss,8,2).'/'.substr($Date_Naiss,5,2).'/'.substr($Date_Naiss,0,4);
     
    $sql = "SELECT User_Emp_Nb,I_Birth_D, CONVERT(varchar, I_Birth_D, 103) ";
    $sql.= "FROM allegro_user, allegro_user_infos ";
    $sql.= "Where User_Emp_Nb = I_Emp_Nb and CONVERT(varchar, I_Birth_D, 103) = ".$date." ";
    $sql_result = $db->Execute($sql);

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 58
    Par défaut
    Aidez moi svp je bloque

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Par défaut
    Incroyable, 5eme post et on ne sait toujours pas quel est votre soucis : on voit bien le code mais quel est votre problème ou quel message d'erreur avez-vous ?

    merci

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 58
    Par défaut
    Lors du premier post j'ai expliqué mon problème, mais je réexplique en fait c'est au niveau de ma requete sql que ça bloque et plus précisément sur le test CONVERT(varchar, I_Birth_D, 103) = '".$date"'

    Ce qui m'étonne le plus ce que quand je remplace la variable $date par la valeur qu'elle est censée contenir (08/04/1987 par exemple) ça marche, en plus le résultat du CONVERT(varchar, I_Birth_D, 103) et la variable $date ont exactement le même format.

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <?php
    
    $chemin = dirname(__FILE__) . '/../../../../';
    require $chemin . 'configuration/configuration.php';
    require $chemin . 'fonctions.php';
    
    session_start();
    
    // Déclaration des variables
    // -------------------------
    
    $Date= $_REQUEST['Date'];
    
    
    if (isset($_SESSION['session'])) {
    	$session = $_SESSION['session'];
    }
    
    if (!session_is_registered('session') || !Session_ok($session)) {
    	rediriger($chemin . 'erreur_session.php');
    	exit;
    }
    
    require $chemin . 'configuration/' . languageSession($session) . '.php';
    
    header('Content-type: text/html; charset='.charsetSession($session));
    
    $date=substr($Date,8,2).'/'.substr($Date,5,2).'/'.substr($Date,0,4);
    
    $sql = "SELECT User_Emp_Nb,I_Birth_D, CONVERT(varchar, I_Birth_D, 103) ";
    $sql.= "FROM allegro_user, allegro_user_infos ";
    $sql.= "Where User_Emp_Nb = I_Emp_Nb and CONVERT(varchar, I_Birth_D, 103) = '$date'" ;
    $sql_result = $db->Execute($sql);
    if ($sql_result->RecordCount() > 0) 
    {
    
    	$data= '1';
    }
    else 
    {
    	$data= '0';
    }
    echo $data;
    
    ?>
    Merci par avance

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

Discussions similaires

  1. [MySQL] Problème requete SQL dans PHP
    Par dl_jarod dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/04/2006, 14h40
  2. problème requete sql fusion de deux count
    Par TuxP dans le forum Langage SQL
    Réponses: 6
    Dernier message: 14/12/2005, 15h15
  3. Problème requete SQL
    Par tonyskn dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/11/2004, 20h37
  4. problème requete sql
    Par Fred- dans le forum ASP
    Réponses: 2
    Dernier message: 13/06/2004, 02h20
  5. Problème Requete SQL et QuickReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/01/2004, 09h31

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