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

Requêtes MySQL Discussion :

Requête comparaison de dates MySQL


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 98
    Points : 40
    Points
    40
    Par défaut Requête comparaison de dates MySQL
    Bonjour,

    Je vous explique mon souci:
    Je voudrais sélectionner le nom des utilisateurs qui n'ont pas fait d'action depuis 2 heures par rapport au moment où je lance le script.
    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select user_name
    from users
    where last_action < SUBDATE (CURRENT_TIMESTAMP, INTERVAL 2 HOUR)
    Le champ last_action est de type datetime.
    Il me retourne l'erreur suivante:
    Incorrect syntax near '2'.
    J'ai lu la doc mais apparemment, c'est la bonne méthode...

    Merci pour votre aide

  2. #2
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    SAluton,
    Essaye en enlevant l'espace entre SUBDATE et la parenthèse (

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par fra7878 Voir le message
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select user_name
    from users
    where last_action < SUBDATE (CURRENT_TIMESTAMP, INTERVAL 2 HOUR)
    J'ai lu la doc mais apparemment, c'est la bonne méthode...

    Merci pour votre aide
    1) vous avez mal lu la doc
    2) même la syntaxe normative ne passe pas sous MySQL sous ce SGBDR queque peu bricolé....

    Syntaxe normative :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select user_name
    from users
    where last_action < SUBDATE (CURRENT_TIMESTAMP, INTERVAL '2 HOUR')
    Syntaxe spécifique à MySQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select user_name
    from users
    where last_action < SUBDATE (CURRENT_TIMESTAMP, 'INTERVAL 2 HOUR')
    A lire sur les incohérences et autres à peu près de MySQL :
    http://blog.developpez.com/sqlpro/p9...udre-aux-yeux/

    Et pour apprendre SQL, mon livre, comme mon site web peuvent vous y aider !

    A +

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 98
    Points : 40
    Points
    40
    Par défaut
    Avant tout merci pour vos réponses

    @ Maljuna Kris: l'espace ne change rien.

    @ SQLpro: J'ai utilisé les deux syntaxes sans succès:
    Pour la normative: Incorrect syntax near '2 HOUR'.
    Pour la spécifique: 'SUBDATE' is not a recognized built-in function name.

    Encore merci pour vos posts

  5. #5
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    salut,

    tu as mal lu: subdate est dédié à calculer une différence de jours (unité: day)

    tu dois juste changer subdate en subtime et ça devrait marcher

  6. #6
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Essaye avec DATE_SUB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DATE_SUB(date,INTERVAL expr type)

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 98
    Points : 40
    Points
    40
    Par défaut
    Merci pour vos réponses mais j'obtiens toujours la même erreur aussi bien avec SUBTIME qu'avec DATE_SUB...

    Quelqu'un pourrait tester cette requête?

    Encore merci

  8. #8
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    j'ai testé alors il faut bien pas d'espace entre subdate et '('

    par contre si tu as toujours une erreur vérifie que le type de CURRENT_TIMESTAMP est bien date, time, datetime ou une chaine de caractère formatée comme un des 3 types précités...
    car ça marche ça:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select SUBDATE('2011-03-11', INTERVAL 2 HOUR);

Discussions similaires

  1. [MySQL] comparaison de date mysql
    Par thepooh dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 28/02/2008, 16h14
  2. [MySQL] Requête avec les dates
    Par lusitano11 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/01/2007, 10h50
  3. Mysql requête sur des dates
    Par lampre dans le forum Requêtes
    Réponses: 10
    Dernier message: 19/12/2006, 12h50
  4. [MySQL] Problème de requête sur des dates
    Par dahu29 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/03/2006, 14h08
  5. [requête] comparaison de date
    Par Fabouney dans le forum DB2
    Réponses: 4
    Dernier message: 31/01/2006, 22h24

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