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

MS SQL Server Discussion :

conseil sur la comparaison de dates


Sujet :

MS SQL Server

  1. #1
    Membre actif Avatar de grinder59
    Inscrit en
    Septembre 2005
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 707
    Points : 215
    Points
    215
    Par défaut conseil sur la comparaison de dates
    Bonjour,

    travaillant sous sql server j'aimerai un petit conseil pour mes nombreuses requêtes qui manipulent les date :

    pour faire une sélection sur des enregistrements dont la date de début est inférieure à aujourd'hui, quelle est la meilleur solution sachant que datedebut est un champs de type datetime (null autorisé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select * from matable where datedebut < getdate()
    select * from matable where CONVERT(datetime, datedebut) < CONVERT(datetime, getdate())
    select * from matable where CONVERT(VARCHAR, datedebut, 103) < CONVERT( varchar, getdate(), 103)
    - ... autre ?
    pour moi la première solution semble la plus logique, mais je crois me rappeler avoir eu quelques petits soucis avec cette façon de faire...

    merci de vos conseils

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 899
    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 899
    Points : 53 140
    Points
    53 140
    Billets dans le blog
    6
    Par défaut
    La première n'a aucun soucis et toutes les autres sont contreperformantes au possible !

    A +

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    En fait tu avais du avoir des soucis au niveau des heures getdate() te donne heure, minute,seconde.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM matable WHERE datedebut < getdate()
    te renvoie aussi les lignes où datedebut est aujourd'hui à 10h du matin si tu fais ta requête l'après midi.
    Dans ce cas le plus simple c'est de tronquer getdate() à la date à minuit, mais uniquement getdate() comme cela tu gardes l'avantage des index sur datedebut.
    Tu peux donc éventuellement écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM matable WHERE datedebut <  CAST(FLOOR(CAST(getdate()))
    ou plus généralement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    declare @ma_date_pivot datetime
    set @ma_date_pivot= CAST(FLOOR(CAST(@datetime_limite))
    SELECT * FROM matable WHERE datedebut <  @ma_date_pivot
    l'idée principale est de calculer les bornes qui sont fixe une fois pour toutes.

    A+
    Soazig

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/11/2012, 16h31
  2. erreur de syntaxe sur une comparaison de date
    Par tofito dans le forum SQL
    Réponses: 2
    Dernier message: 01/12/2009, 13h16
  3. Problème comparaison de date sur 4 caractères
    Par carmella dans le forum SQL
    Réponses: 4
    Dernier message: 11/02/2009, 10h44
  4. Problème sur comparaison de date
    Par Nixar dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/12/2007, 09h19
  5. Recherche Livre / Conseils sur la conception de Base
    Par Yeuma dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 02/01/2004, 14h25

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