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

SQL Procédural MySQL Discussion :

[DATEDIFF()] Problème fonction...


Sujet :

SQL Procédural MySQL

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2005
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 1
    Points : 1
    Points
    1
    Par défaut [DATEDIFF()] Problème fonction...
    Bonjour,

    J'essaie de comparer 2 dates mais une erreur de requete survient toujours au même endroit et je ne sais pas pourquoi :

    "Erreur dans l'exécution de la requête 'DELETE FROM commande_produit WHERE DATEDIFF(hh,'2005-11-27 07:00:00','2005-11-27 12:14:45') > 1'.
    Message de MySQL : Erreur de syntaxe près de ''2005-11-27 12:14:45') > 1' à la ligne 1"

    Mon code est le suivant :

    /*
    $date = date("Y-m-d H:i:s");

    $res = ExecRequete("SELECT * FROM commande_produit WHERE client_comprod = '$num_client'", $connexion);
    if($res)
    {
    while($client = ObjetSuivant($res))
    {
    $date_client = $client->date_comprod;
    $resultat11 = ExecRequete("DELETE FROM commande_produit WHERE DATEDIFF(hh,'$date_client','$date') > 1", $connexion);
    }
    }
    */

    Est-ce que quelqu'un aurait une solution ?

    Merci d'avance.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 140
    Points : 166
    Points
    166
    Par défaut
    Un peu spécial ton delete, il porte sur rien de la table commande_produit

    reformuler autrement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DELETE FROM commande_produit WHERE 3 > 1

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 140
    Points : 166
    Points
    166
    Par défaut
    Pour faire ce que tu veux faire, il faut faire le test dans le code PHP
    puis faire le delete (si le test est ok) avec la clé de la table commande_produit (un peu moins propre tu peux te baser sur la date_client)

    pour t'en dire plus il faudrait avoir le descriptif de commande_produit

    De plus les select * sont mauvais, il faut decrire les elements que tu souhaite remonté (le jour où tu rajoute un champs dans ta table, ton code ne marche plus).

  4. #4
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut Re: [DATEDIFF()] Problème fonction...
    Eh oh, faudrait peut-être lire la doc MySQL avant de poster:

    Citation Envoyé par http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
    DATEDIFF(expr,expr2)

    DATEDIFF() returns the number of days between the start date expr and the end date expr2. expr and expr2 are date or date-and-time expressions. Only the date parts of the values are used in the calculation.
    ... c'est un nombre de JOURS que ça te renvoie.

    Ce qu'il te faut, c'est un TIMESTAMPDIFF, qui malheureusement n'est disponible qu'à partir de la 5.0

    Sinon, tu peux te débrouiller en faisant un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE ADDTIME(NOW(), "1:00:00") < $date_client
    Ou quelque chose dans le genre...

    A noter que j'ai changé l'instruction PHP $date = date("Y-m-d H:i:s"); par la fonction MySQL NOW().
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  5. #5
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut Re: [DATEDIFF()] Problème fonction...
    Par ailleurs, tu peux tout faire en une seule requête (pas de SELECT, pas de boucle, juste l'essentiel...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DELETE FROM commande_produit
    WHERE client_comprod=$num_client
    AND ADDTIME(NOW(), "1:00:00") < date_comprod
    Par contre explique nous ce que tu veux faire parce que c'est vrai que ça semble bizarre comme requête (supprimer les commandes passées dans une heure... )
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

Discussions similaires

  1. Problème fonction Datediff
    Par fabien56 dans le forum Formules
    Réponses: 1
    Dernier message: 22/05/2009, 08h51
  2. [SQL-Server] Problème fonction DATEDIFF
    Par Pr0pHeT dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/01/2008, 16h14
  3. Problème fonction PL/SQL
    Par SSJ17Vegeta dans le forum PL/SQL
    Réponses: 2
    Dernier message: 29/10/2005, 21h14
  4. Problème fonction et trigger sous 7.2
    Par anoukhan dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/06/2005, 22h53
  5. Réponses: 2
    Dernier message: 20/08/2004, 17h10

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