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

SQL Oracle Discussion :

Comment exprimer en SQL qu'une date est antérieure à une autre date?


Sujet :

SQL Oracle

  1. #1
    Membre très actif
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Par défaut Comment exprimer en SQL qu'une date est antérieure à une autre date?
    J'ai un problème en SQL où je dois exprimer qu'une date est antérieure à une
    autre,et je ne sais pas s'il faut que j'utilise l'inégalité<(inférieur) pour l'exprimer
    vu que ce sont des dates je ne sais pas si on peut utiliser des inégalités(<).
    Voici l'exercice:
    Certains enregistrements concernant les dates d'entrée et de sortie des pièces de véhicules
    ont été corrompus par une application tierce.
    On cherche à retrouver ces enregistrements.
    Modifiez la requête pour lister les localisations de pièces (vehicle_part_location) dont les dates
    sont invalides: sélectionner les enregistrements pour lesquels les dates d'arrivée (arrived_timestamp)
    et de départ(left_timestamp) sont définies et pour laquelle la date d'arrivée est antérieure à la date
    de départ.
    N'afficher que les colonnes VEHICLE_PART_LOCATION_ID et RFDI dans cet ordre.
    Voici la requête à modifier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select * 
    from vehicle
    Voici ma solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select VEHICLE_PART_LOCATION_ID,RFDI
    from vehicle
    where (arrived_timestamp is NOT NULL )and( left_timestamp is NOT NULL)
    having arrived_timestamp<left_timestamp;
    Ma question est : ai-je le droit d'écrire" having arrived_timestamp<left_timestamp"?

  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 986
    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 986
    Billets dans le blog
    6
    Par défaut
    Tout ce qui est triable se compare. Une date peut heureusement se trier comme une chaine de caractères et comme un nombre.

    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 Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 167
    Par défaut
    Bonjour,

    Oui des données de type DATE (ou TIMESTAMP) peuvent se comparer à l'aide des opérateurs d'inégalité, donc tu as bien le droit d'utiliser < ici. Par contre la clause HAVING sert normalement à filtrer des résultats d'agrégat (comme, comptage, etc.), donc il faut plutôt déplacer ta condition dans la clause WHERE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select VEHICLE_PART_LOCATION_ID,RFDI
    from vehicle
    where arrived_timestamp is NOT NULL and left_timestamp is NOT NULL
       and arrived_timestamp<left_timestamp;

  4. #4
    Membre très actif
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Par défaut
    D'accord merci Vanagreg et Sql pro.

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 132
    Par défaut
    La clause HAVING n'a d'utilité que pour effectuer des restrictions sur le résultat d'agrégations.
    Dans cette requête il n'y a ni regroupement, ni agrégation.
    La condition arrived_timestamp < left_timestamp est donc à placer dans la clause WHERE.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Membre très actif
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Par défaut
    Merci

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

Discussions similaires

  1. comment utilisé le résultat d'un SQL dans une autre requête
    Par adelcrb dans le forum Bases de données
    Réponses: 3
    Dernier message: 11/02/2013, 22h19
  2. Réponses: 4
    Dernier message: 30/06/2011, 11h50
  3. Réponses: 7
    Dernier message: 15/04/2011, 15h19
  4. Réponses: 23
    Dernier message: 19/09/2006, 11h33
  5. Comment basculer le focus depuis une autre form ?
    Par altahir007 dans le forum Composants VCL
    Réponses: 9
    Dernier message: 03/09/2003, 15h54

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