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

Langage SQL Discussion :

Requête avec date et heure


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 95
    Points : 71
    Points
    71
    Par défaut Requête avec date et heure
    Bonjour,

    Je voudrais faire une requete qui récupère les données entre 2 jours avec un indice heure

    exemple : je voudrais récuperer le resultat depuis la date x depuis 5h00 jusqu'à la date x+1 jusqu'à 5:00.

    J'espère que je suis assez clair.

    Merci d'avance

  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 770
    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 770
    Points : 52 726
    Points
    52 726
    Billets dans le blog
    5
    Par défaut
    En SQL Standard :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE MaColonneDateHeure BETWEEN '2017-01-01 05:00' AND '2017-01-01 05:00' + INTERVAL '1 DAY'
    Avec certains SGBDR :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE MaColonneDateHeure BETWEEN '2017-01-01 05:00' AND DATEADD(day, 1, '2017-01-01 05:00')
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 95
    Points : 71
    Points
    71
    Par défaut
    Le soucis c'est que j'ai 2 colonnes. Une pour la date et une pour l'heure.

    Existe t'il un moyen dans une requête de concaténer les 2 colonnes pour faire cette recherche?? Est ce qu'il faut que je fasse une colonne avec la concaténation en dure dans la base.

    Merci pour ce début de réponse.

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Bonsoir,

    Les fonctions date et heures sont significativement différentes d'un SGBD à l'autre, précisez le votre et sa version

    Pour une recherche sur une plage vous pouvez effectivement transformer en char et concaténer date et heure, mais attention,
    - il faut d'abord calculer la date (cf. la proposition de SQL Pro)
    - la requete sera en ce cas non Sargable (pas d'utilisation d'index possible, si toutefois vos colonnes date/heure sont indexées)

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 95
    Points : 71
    Points
    71
    Par défaut
    Bonjour,

    Je travail sur SQL SERVER 2008.

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 770
    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 770
    Points : 52 726
    Points
    52 726
    Billets dans le blog
    5
    Par défaut
    Dans ce cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DATEADD(ms, DATEDIFF(ms, '00:00', H), CAST(D AS DATETIME2))
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 95
    Points : 71
    Points
    71
    Par défaut
    SQL PRO, pourraais tu me donner un peu plus d'explication ??

    A quoi correspond 'ms' , le 'H', le 'D' et que fait la fonction 'cast'

    Merci d'avance

  8. #8
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Là vous demandez carrément des cours particuliers

    Regardez plutôt ici (DATEADD) :
    https://msdn.microsoft.com/en-us/library/ms186819.aspx

    Et là (CAST) :
    https://msdn.microsoft.com/fr-fr/library/ms187928.aspx

    Mais surtout ici :
    http://www.developpez.net/forums/d68...q-langage-sql/


  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 770
    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 770
    Points : 52 726
    Points
    52 726
    Billets dans le blog
    5
    Par défaut
    Si tu respectais la charte de postage, tu ne poserais pas ce genre de question...
    http://www.developpez.net/forums/a69...gage-sql-lire/
    Donc, à l'avenir respecte là, car ça te fait perde du temps et à moi aussi !

    H et D sont les colonnes de la table, l'une contenant une date (type DATE) et l'autre contenant un temps (type TIME)

    ms signifie milliseconde, c'est le type d'unité de temps et donc la granularité temporelle que l'on veut traiter dans les deux fonctions DATEADD et DATEDIFF

    CAST, fait partie des fonctions de la norme SQL pour effectuer un transtypage !

    Il serait peut être temps d'apprendre le SQL...
    Nom : Couverture SQL Synthex 4e ed - 500.jpg
Affichages : 2285
Taille : 77,8 Ko

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 95
    Points : 71
    Points
    71
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select * 
     from BDD.table
    where DATEADD(ms,datediff(ms,'00:00:00',heure),cast(jour as datetime2)) >= '2017/01/16 5:00:00'
     and DATEADD(ms,datediff(ms,'00:00:00',heure),cast(jour as datetime2)) <'2017/01/17 5:00:00'
    Merci à SQLPRO et escartefigue pour votre patience.

    Je vous promet que je vais me mettre plus profondément dans le langage SQL.

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

Discussions similaires

  1. requete avec date et heure
    Par robert_trudel dans le forum Access
    Réponses: 2
    Dernier message: 26/04/2006, 00h15
  2. [sql server] requête sur dates et heures (format du résultat
    Par isachat666 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 21/02/2006, 13h48
  3. Réponses: 4
    Dernier message: 13/02/2006, 18h58
  4. Problème de requête avec dates
    Par charleshbo dans le forum Access
    Réponses: 4
    Dernier message: 08/02/2006, 00h17
  5. Requête avec dates
    Par skyman272 dans le forum Access
    Réponses: 11
    Dernier message: 30/01/2006, 10h16

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