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 :

Requete avec comparaison de deux dates


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Septembre 2009
    Messages : 48
    Par défaut Requete avec comparaison de deux dates
    Bonjour à tous,

    Je dois faire une requete dont une des conditions est de récupérer toutes les lignes dont ma date d'envoi de mon mail (champ SendDate) est égal à maintenant mais sans prendre en compte les secondes.

    exemple :
    id SendDate
    1 2009-11-06 16:19:19.456
    2 2009-11-06 16:20:52.652
    3 2009-11-06 16:20:26.354
    4 2009-11-06 16:21:12.333
    5 2009-11-06 16:21:59.548

    Si on est le 06/11/2009 à 16h20, je veux qu'il me retourne les lignes 2 et 3.

    La requete intéroge une base de donnée SQL Server 2008.

    Merci pour votre aide.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 6
    Par défaut
    Bonjour,

    Essaye la condition suivante
    where datediff(minute,SendDate,getdate())<=0

    Le principe est d'utiliser la fonction datediff avec la granulométrie que tu veux (minute, hour, day,..)

  3. #3
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Septembre 2009
    Messages : 48
    Par défaut
    Ca marche !!!

    Merci beaucoup. Té trop génial !!!!

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Mais il est mieux d'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE SendDate > DATEADD(minute, -1, GETDATE())
    Parce que dans ce cas vous pourrez utiliser l'éventuel index sur la colonne, évitant ainsi le scan de table, long et coûteux : votre prédicat devient cherchable

    @++

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 430
    Par défaut
    Bonjour

    comment fait-on si on voulait que les heures, les minutes, et les secondes ne soient pas pris en compte ?

    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE SendDate between getdate() and getdate()
    et aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where sendDate <= getdate and sendDate >= getdate()
    mais je n'obtiens pas la bonne réponse.

    Je veux prendre seulement les lignes dont sendDate est égal à getdate() mais sans tenir compte de l'heure et des minutes et des secondes.

    je suis sur SQL 2000.

    Merci de votre aide.


    Citation Envoyé par elsuket Voir le message
    Bonjour,

    Mais il est mieux d'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE SendDate > DATEADD(minute, -1, GETDATE())
    Parce que dans ce cas vous pourrez utiliser l'éventuel index sur la colonne, évitant ainsi le scan de table, long et coûteux : votre prédicat devient cherchable

    @++

  6. #6
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    La fonction GETDATE() retourne la date courante du système.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE SendDate BETWEEN getdate() AND getdate()
    Cela ne peut pas fonctionner puisque vous cherchez les lignes dont les valeurs de la colonne SendDate sont entre maintenant et maintenant.
    Cela suppose donc que vous venez d'insérer une ligne, et que vous êtes parvenez à la sélectionner dans la même milliseconde ...

    C'est la même chose ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE sendDate <= getdate AND sendDate >= getdate()
    Je veux prendre seulement les lignes dont sendDate est égal à getdate() mais sans tenir compte de l'heure et des minutes et des secondes.
    Essayez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE SendDate > CAST(CONVERT(CHAR(8), GETDATE(), 112) AS DATETIME)
    ou encore :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE SendDate  > CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)
    @++

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

Discussions similaires

  1. Comparaison de deux dates avec heure
    Par mokochan dans le forum MATLAB
    Réponses: 5
    Dernier message: 29/04/2013, 17h10
  2. Requete avec comparaison avec la date du jour
    Par marpolo dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 02/10/2009, 15h27
  3. Problème de requete avec comparaison de date
    Par crabe71 dans le forum Linq
    Réponses: 2
    Dernier message: 23/07/2009, 09h39
  4. [VB6] Comparaison de deux dates dans une requête
    Par paradeofphp dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 07/06/2006, 19h45
  5. Réponses: 6
    Dernier message: 26/07/2005, 10h20

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