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

Oracle Discussion :

[DEBUTANT]Comparaison sur date et heure


Sujet :

Oracle

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 213
    Points : 102
    Points
    102
    Par défaut [DEBUTANT]Comparaison sur date et heure
    Salut à tous,

    J'ai un gros problème avec les dates et heures dans Oracle.

    J'aimerai faire une comparaison du style avoir toutes les lignes d'une table dont les dates de debut et de fin (qui sont des champs de la table) sont comprisent entre le 10/05/2005 et le 10/10/2005.

    (Voici un code exemple qui forcément ne fonctione pas mais c'est pour donnée une idée de ce que je veux faire)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM TABLE WHERE DATEDEBUT>=10/05/2005 AND DATEFIN<=10/10/2005
    J'ai esseyer un peu de tous mais rien ne fonctionne. Seriez-vous m'aider

    D'avance merci.

  2. #2
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM TABLE WHERE trunc(DATEDEBUT, 'DD')>= to_date ('10/05/2005', 'DD/MM/RRRR') AND trunc (DATEFIN, 'DD')<= to_date ('10/10/2005', 'DD/MM/RRRR');
    trunc: tronque ta table au paramètre précisé (ici, DD au jour, c'est à dire sans les heures)

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 213
    Points : 102
    Points
    102
    Par défaut
    Cela fonction très très bien, encore un grand merci.

    Serait il possible de m'indiquer comment le faire pour les heures

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT * FROM TABLE WHERE trunc(DATEDEBUT, 'DD')>= to_date ('10/05/2005', 'DD/MM/RRRR') AND trunc (DATEFIN, 'DD')<= to_date ('10/10/2005', 'DD/MM/RRRR');[quote]
     
    Je suppose qu'il faut mettre un autre paramêtre que DD, mais lequel.
     
    Encore un grand merci pour votre aide
     :D [/quote]

  4. #4
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    pour les heures, c'est HH

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SQL> select to_char (sysdate, 'DD/MM/RRRR HH24:MI:SS') from dual;
     
    TO_CHAR(SYSDATE,'DD
    -------------------
    14/11/2005 17:18:44
     
    SQL> select to_char (trunc (sysdate, 'HH'), 'DD/MM/RRRR HH24:MI:SS') from dual;
     
    TO_CHAR(TRUNC(SYSDA
    -------------------
    14/11/2005 17:00:00

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 213
    Points : 102
    Points
    102
    Par défaut
    Je vous remercie de répondre à ma question malgré le RESOLU,mais j'ai encore un petit soucis.

    Je dois faire une requete pour obtenir des infos, mais en foction de tranche de date et heure, et je n'y arrive pas.

    Voici ma requete, pourriez vous m'aider
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select idconstitution_groupe from groupe_date_courte where date_form=to_date('20051105','YYYYMMDD') and idconstitution_groupe=7 and heure_debut<=to_date(083000,'HH24MISS') and heure_fin=to_date(170000,'HH24MISS');
    J'ai esseyer avec la fonction trunc et HH mais cela ne fonctionne pas, sans doute une mauvaise manipulation de ma part.

    Mise à part l'heure, pour la date tous fonctionne bien, tell que c'est là.

    Encore merci pour votre aide

  6. #6
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Quels sont les types des colonnes :
    • - heure_debut
      - heure_fin


    Pouvez-vous me donner un exemple de données pour ces colonnes ?

  7. #7
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Citation Envoyé par tripper.dim
    Je vous remercie de répondre à ma question malgré le RESOLU,mais j'ai encore un petit soucis.
    SI le statut résolu ne refléte pas l'état de votre Post, nous pouvons l'enlever

  8. #8
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 213
    Points : 102
    Points
    102
    Par défaut
    Pour répondre au modérateur, il était quand je l'ai mis, mais allant plus loin et plutot que de mettre une autre question similaire j'ai préférer réutiliser celui ci.

    Je pense que j'ai sans doute fait une erreur de syntax et je ne pense pas que le remettre en vaille la peine, mais merci quand même.

    Mes champs sont des date-time

  9. #9
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Tu as la date à l'intérieur

    Ces conditions de ta clause where sont fausses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    and heure_debut<=to_date(083000,'HH24MISS') and heure_fin=to_date(170000,'HH24MISS');
    tu ne précises pas de jour/mois/année, or :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select to_char (to_date ('083000','HH24MISS'), 'DD/MM/RRRR HH24:MI:SS') from dual;
    Si la date n'a pas d'importance il faut que tu fasses quelque chose comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    and to_char(heure_debut, 'HH24MISS')<='083000' and to_char(heure_fin, 'HH24MISS')=170000;

  10. #10
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 213
    Points : 102
    Points
    102
    Par défaut
    Je vois que dans la dernière partie vous mettez le contenu des champs en char, mais c'est difficilie d'utiliser les >= <= avec du char????? (je pense)

    Mais je n'ai peut-être pas tous compris. (désolé)

    Dans mes recherche d'heure, je ne dois pas m'occuper de la date, qui elle se trouve à un autre endroit. Mais je dois travailler sur des tranches d'heure (je dois trouver un enregistrement qui se situe par exemple entre 08H00 (heure de debut) et 17H00 (heure de fin)).

    Merci

  11. #11
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Citation Envoyé par tripper.dim
    Je vois que dans la dernière partie vous mettez le contenu des champs en char, mais c'est difficilie d'utiliser les >= <= avec du char????? (je pense)
    En général, tu as raison, mais dans la solution que je t'ai proposée, la comparaison fonctionne, car tu compares des chaînes de caractères de même longueur.

    Exemple :
    - '083000' est bien inférieur à '235959'
    - par contre si tu comparais '83000' et '235959', cela ne serait pas vrai.

    Mais si tu préfères rien ne t'empêche de repasser par des nombres.

  12. #12
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 213
    Points : 102
    Points
    102
    Par défaut
    Salut,

    En ce qui concerne le fait de les repasser en nombre, c'est pas un problème, mais je dois sortir de mon code SQL (je pense) et j'aimerai faire un requete qui me sort le résultat et pas faire plusieurs requete qui m'oblige à faire des traitement.

    Et en ce qui concere le passage en char, chez moi, il ne fonctionne pas très bien voila les requetes (bonne et pas bonne):

    La première, c'est en partie celle que j'ai besoin, mais j'ai une erreur à cause du (<=)
    ORA-01858: caractère non numérique rencontré à la place d'un numérique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select idconstitution_groupe, to_char(date_formation,'YYYYMMDD'),to_date(heure_debut,'HH24MISS'),to_date(heure_fin,'HH24MISS') from groupe_date_courte where date_formation=to_date('20050806','YYYYMMDD') and idconstitution_groupe=7 and
    to_char(heure_debut,'HH24MISS')<='080000';
    Tandis que celle ci passe (pas d'erreur) mais ne donne pas le résultat souhaiter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select idconstitution_groupe, to_char(date_formation,'YYYYMMDD'),to_date(heure_debut,'HH24MISS'),to_date(heure_fin,'HH24MISS') from groupe_date_courte where date_formation=to_date('20050806','YYYYMMDD') and idconstitution_groupe=7 and
    to_char(heure_debut,'HH24MISS')>='080000';
    Donc je reste un peu sur ma fin, je n'arrive pas à finir cette requete.

    Encore merci de vous occupée de mon problème.


  13. #13
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Peux-tu me mettre le desc de ta table groupe_date_courte ?

  14. #14
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 213
    Points : 102
    Points
    102
    Par défaut
    IDDATE_COURTE NOT NULL NUMBER(11)
    IDCONSTITUTION_GROUPE NUMBER(11)
    DATE_FORMATION DATE
    HEURE_DEBUT DATE
    HEURE_FIN DATE
    IDSALLE VARCHAR(20)
    COMMENTAIRE CLOB

  15. #15
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Je ne sais pas pourquoi une requête passe et pas l'autre...

    Par contre dans ta clause select tu fais un to_date sur une colonne date et cela ne peut pas marcher... Par ailleurs dans ta clause where, tu compares une date avec des heures et une date sans heure.

    Essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select idconstitution_groupe, to_char(date_formation,'YYYYMMDD'),to_char(heure_debut,'HH24MISS'),to_char(heure_fin,'HH24MISS') from groupe_date_courte where trunc(date_formation, 'DD')=to_date('20050806','YYYYMMDD') and idconstitution_groupe=7 and 
    to_char(heure_debut,'HH24MISS')<='080000';

  16. #16
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 213
    Points : 102
    Points
    102
    Par défaut
    En ce qui concerne le to_date, c'est une faute de frappe de ma part.

    Mais cela résout le problème.

    Maintenant tous fonctionne très bien.

    Un grand merci pour votre aide

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

Discussions similaires

  1. calcul sur date et heure indexées
    Par jimbo13300 dans le forum VBA Access
    Réponses: 6
    Dernier message: 26/06/2007, 14h05
  2. Comment programmer un rappel sur date et heure
    Par pierrot67 dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/05/2007, 18h45
  3. [SQL2K][DEBUTANT] requete sur date
    Par SmokE dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/04/2007, 11h48
  4. [REQ] Requête sur date et heure
    Par benazerty dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 26/06/2006, 13h34
  5. [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

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