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 :

Erreur de syntaxe avec utillisation de SUBTIME()


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 284
    Points : 149
    Points
    149
    Par défaut Erreur de syntaxe avec utillisation de SUBTIME()
    bonjour,

    J'aimerais vérifier si une date n'est pas inférieur à la date courante - 1h.

    J'ai vu qu'il existait SUBTIME mais j'ai une erreur de syntaxe SQL sur la ligne ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUBTIME(NOW(), created_at) AS test FROM `tokens`;
    et j'obtiens:

    Sachant que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT created_at AS test FROM `tokens`;
    J'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    test
    	2012-05-15 13:24:29
    	2012-05-15 13:24:29
    Qu'y a t-il de faux dans ma première requête ?

    Merci !

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    De quel type est la colonne created_at ?
    D'après la doc, il faudrait que created_at soit de type time, ce qui n'est visiblement pas le cas. C'est plutôt du DATETIME non ?

    J'aimerais vérifier si une date n'est pas inférieur à la date courante - 1h.
    Utilise plutôt DATE_SUB.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DATE_SUB(CURRENT_DATE, INTERVAL 1 HOUR) AS maintenant_moins_une_heure
    Ensuite, tu peux comparer ta colonne à cette expression.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 284
    Points : 149
    Points
    149
    Par défaut
    C'est un timestamp... on ne peut pas effectuer ce genre d'opération sur un timestamp ?

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    J'ai édité mon message après ta réponse.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 284
    Points : 149
    Points
    149
    Par défaut
    Bonjour,

    Merci pour ta réponse ! Je suis parvenu à mes fins grâce à la condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TIMESTAMPDIFF(HOUR, created_at, CURRENT_DATE) <= 1
    Merci pour ton aide !

    P.S: Y a t-il un format de date à favoriser ? Dans les frameworks récents tel que Synfony2 on utilise souvent des datetime, mais je trouve le current_timestamp des valeurs par défaut dans phpmyadmin bien pratique.

    Merci !

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

Discussions similaires

  1. [PHP 4] Erreur de syntaxe avec Implode
    Par jmtrivia dans le forum Langage
    Réponses: 2
    Dernier message: 13/05/2009, 18h43
  2. Gestionnaire d'interruptions : erreur de syntaxe avec l'opcode call
    Par Link/DD dans le forum Programmation d'OS
    Réponses: 7
    Dernier message: 23/01/2008, 17h00
  3. [POO] Erreur de syntaxe avec une classe
    Par sirbaldur dans le forum Langage
    Réponses: 5
    Dernier message: 10/01/2007, 13h30
  4. [Conception] Erreur de syntaxe avec un champ de tableau
    Par lodan dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 21/09/2006, 11h45
  5. Erreur de syntaxe avec UPDATE
    Par tyarak dans le forum Requêtes
    Réponses: 3
    Dernier message: 01/02/2006, 01h18

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