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 :

[SQL Server] CONVERT / Date et Timestamp


Sujet :

MS SQL Server

  1. #1
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 487
    Par défaut [SQL Server] CONVERT / Date et Timestamp
    Bonjour à tous,

    j'ai une table qui contient un champ eraid de type datetime(23,23), je souhaiterais filtrer dessus avec un between (ou une combinaison d'inégalités):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM
    MATABLE M
    WHERE M.eraid>='20121202' AND M.eraid<=getdate()
    la requête ci-dessus fonctionne, mais ca ne me plait pas car j'aimerais avoir aussi les heures en plus, en gros faire ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM
    MATABLE M
    WHERE M.eraid>='2012-12-02 13:00:05' AND M.eraid<=getdate()
    dans ce cas là la requête prend un temps fou et timeout...

    auriez-vous une idée ?

    d'avance merci !

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    591
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 591
    Par défaut
    Bonjour,

    Une première chose, l'étoile n'est que pour le forum, mais dans la requête, il faut dénommer les colonnes à retourner.

    Ensuite, la colonne Eraid est indexée, sinon lui mettre un index.

    Pour le code, pourquoi ne pas passer les valeurs par paramètre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Col1, Col2, etc 
    FROM MATABLE M
    WHERE M.Eraid BETWEEN :pDateDebut and :pDateFin;
    En principe, ces quelques modifications devraient améliorer les performances.

    A+

  3. #3
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 487
    Par défaut
    Bonjour seabs et merci pour ta réponse,

    Citation Envoyé par seabs Voir le message
    Une première chose, l'étoile n'est que pour le forum, mais dans la requête, il faut dénommer les colonnes à retourner.
    exact, j'ai mis une étoile pour ne pas surcharger le post, par souci de clarté

    Citation Envoyé par seabs Voir le message
    Ensuite, la colonne Eraid est indexée, sinon lui mettre un index.
    je n'ai hélas que des droits de lecture sur la base (on écrit jamais rien en BI, on ne fait que lire )

    Citation Envoyé par seabs Voir le message
    Pour le code, pourquoi ne pas passer les valeurs par paramètre.
    en fait j'exécute la requête dans un ETL. Est-ce qu'il est tout de même possible d'utiliser ces valeurs par paramètre ?

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    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 814
    Billets dans le blog
    14
    Par défaut
    Est-ce que la fonction getdate() renvoie bien un type DATETIME ?

    En SQL standard, il existe CURRENT_TIMESTAMP qui retourne la date complète de l'instant où est exécutée la requête.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Castez votre date explicitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
      FROM MATABLE as M
     WHERE M.eraid >= convert(datetime, '2012-12-02 13:00:05', 121)
       AND M.eraid <= getdate();

  6. #6
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 487
    Par défaut
    Hello Waldar,

    merci infiniment pour cette solution ! ca fonctionne impecc (et j'ai mieux compris l'histoire du convert(datetime...) en bonus)

    @CinePhil: il me semble getdate() renvoie bel et bien un datetime, tout comme current_timestamp

    merci à tous pour votre support !

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

Discussions similaires

  1. [sql server 2k8] Date:Probleme de temps de réponse
    Par djalil dans le forum Développement
    Réponses: 19
    Dernier message: 21/10/2010, 11h29
  2. sql server et date du system
    Par Romantic_a dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 16/05/2008, 14h09
  3. sql server champ date
    Par Alex35 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/12/2007, 13h35
  4. [SQL SERVER] Conversion date en string
    Par taska dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 31/05/2007, 15h26
  5. [SQL Server] Pb Date et Montant derniere commande
    Par marman dans le forum Langage SQL
    Réponses: 7
    Dernier message: 12/10/2006, 19h21

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