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 :

Format DateTime sous oracle


Sujet :

Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 176
    Par défaut Format DateTime sous oracle
    Bonjour a tous,
    Je débute en Oracle et ne connait pas le format DateTime (avec l'heure) j'ai toujour utiliser un format date simple dans lequelle j'inserer mes dates comme ca : insert into ... values ("20070816"); ou je selectionné des enregistrements comme ca : select ... where date between "date" and "date". Et la avec le format DateTime je m'en sort pas je voi sur des forums et des sites des soluces dans ce genre To_number(to_char(to...(DateTime, "mmddyyyy"))) ect ... mais je ne comprend pas trop.

    Mon seul but dans cette histoire et de pouvoir faire une requettes avec une condition portant sur une date (le champ est au format DateTime SGBD : oracle)

    ex select blabla from table where date="20070816" (marche pas .. )

    si quelqu'un peut m'aider ce serais cool
    sinon bonne proggz a tousss

  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
    Par défaut
    Le format date d'oracle inclus automatiquement les heures :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SQL> create table t1 (d date);
    Table created.
     
    SQL> insert into t1 values (sysdate);
    1 row created.
     
     
    SQL> alter session set nls_date_format = 'DD/MM/RRRR HH24:MI:SS';
    Session altered.
     
    SQL> select d from t1;
    D
    -------------------
    16/08/2007 15:49:59
    Le format date pouvant changé d'une session à l'autre il est très risqué de traiter des dates sans spécifier le format, il est donc conseiller de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into maTable values (..., to_date ('16/08/2007', 'DD/MM/RRRR'), ...);
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select *
    from maTable
    where colDate = to_date ('16/08/2007', 'DD/MM/RRRR');
    Sinon Oracle fait une conversion implicite et si le format de la session n'est pas celui de la chaîne de caractère, tu risques d'avoir une erreur.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 176
    Par défaut toujour un pb avec ma condition where date=to_date(date , format)
    hello, merci pour ta réponse, (jpenser avoir reply hiere soir mais j'ai du oublier de valider ma réponses avant de partir!).

    Je pense avoir compris une partie de ton explication, mais ca ne marche toujour pas.

    Plusieurs questions suite a ton poste :

    Le alter session set ... JJMMRRRR est il obligatoire pour que les requettes que tu as écris fonctionnent.

    Le format date (j'ai toujour vu MMDDYYYY, le fait que tu a mis RRRR est ce que ca joue bcp, est ce vraiment important ou non).

    Sinon voici ma requette (qui ne marche pas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from Utilisateur where StartDate>=to_date('08-01-2007', 'mm-dd-yyyy')
    j'ai essayé de remuer le format DateTime dans ton les sens DDMMYYYY ddmmyyyy avec des '-' sans '-' des '/' sans '/' ... les dates dans ma base sont comme ca : mois/jours/annnée

    Autre chose je précise que je n'est pas de SQL + ni aucun outil pour tester mes requettes en direct, j'utilise perl pour ecrire mes requettes et un ODBC pour oracle fait l'interface entre la base et mon programme.

    Voila si quelqu'un voi ou est ce que mon probleme se situe je suis prenneur

    Bonne progZ a tous

  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
    Par défaut
    Citation Envoyé par Ice-tea
    Le alter session set ... JJMMRRRR est il obligatoire pour que les requettes que tu as écris fonctionnent.
    Non, c'était juste pour illustrer que les colonnes dates d'oracle prenait bien en compte l'heure.

    Citation Envoyé par Ice-tea
    Le format date (j'ai toujour vu MMDDYYYY, le fait que tu a mis RRRR est ce que ca joue bcp, est ce vraiment important ou non).
    RRRR est à privilègier dans ce type de cas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SQL> select to_date ('25/10/85', 'DD/MM/YYYY') from dual;
    TO_DATE('2
    ----------
    25/10/0085
     
    SQL> select to_date ('25/10/85', 'DD/MM/RRRR') from dual;
    TO_DATE('2
    ----------
    25/10/1985
    Sinon c'est équivalent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SQL> select to_date ('25/10/1985', 'DD/MM/YYYY') from dual;
    TO_DATE('2
    ----------
    25/10/1985
     
    SQL> select to_date ('25/10/1985', 'DD/MM/RRRR') from dual;
    TO_DATE('2
    ----------
    25/10/1985
    Citation Envoyé par Ice-tea
    Sinon voici ma requette (qui ne marche pas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from Utilisateur where StartDate>=to_date('08-01-2007', 'mm-dd-yyyy')
    Message d'erreur ? Qu'est-ce qui "ne marche pas" ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 176
    Par défaut
    j'ai beaucoup de mal a recup les message d'erreur avec perl a priorie il m'affiche aucun message d'erreur Mais ne recupere rien (j'utilise une vue)

    ma requette est elle correct ?

    N'aillant pas les infos sur la base de données j'en ai conclu moi meme que le format etait datetime, existe t'il un autre format sous oracle qui aurait pour masque : 17/08/2007 00:00:00 ?

    Merci pour la reponse

    bonne progz a tous

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 176
    Par défaut
    quand je fait un select * voici un exemple des du format date retourné par oracle :
    08/17/2007 00:00:00

    ma requette (pour ce resultat)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select StartDate from ActiveUsers
    now quelques chose qui me ramene rien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select StartDate from ActiveUsers where StartDate=to_date('08/17/2007', 'MM/DD/YYYY');
    la 2eme requette me ramene rien (et je n'arrive pas a savoir si un message d'ereur et retourné, je me demande si ma requette est correcte

  7. #7
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Merci d'utiliser les balises CODE

    Si ta colonne est de format date avec les heures ça ne peut effectivement pas fonctionner. Il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT StartDate 
    FROM ActiveUsers 
    WHERE StartDate like to_date('08/17/2007', 'MM/DD/YYYY')
    ou bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT StartDate 
    FROM ActiveUsers 
    WHERE trunc(StartDate) = to_date('08/17/2007', 'MM/DD/YYYY')
    mais là, gare aux indexes

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 176
    Par défaut
    merciii pour ta réponse ... c bizzard j'ai tester les requettes sur une certaines base oracle sa marche nickel et des que jl'ai éxécute sur bonne base sa marche pas aucun resultat retourner, aucun message, tfacon ras le Q, jpeux pas trop manipuler cette base, jconnais pas le format des champs, ni meme les champs d'ailleurs apart 2 ou 3 ... et pour aller plus loin j'ai meme pas de pass pour me connecter a la base (inclut dans l odbc) ... breff jpeux rien foutre c plus casse souille qu'autre chose (oui oui j'ai tester de manipuler la base via oracle et access) ...
    Jvous remercii a touss pour votre aide (les derniere requettes que vous m'avez donnés on etaient tester sur une base oracle et marche, merci a toussss
    bonne proggg

  9. #9
    Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Novembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Novembre 2013
    Messages : 3
    Par défaut Formatage des dates sous Oracle
    Hello,
    il suffit d'utiliser la fonction TO_CHAR pour manipuler des dates sous ORACLE.


    @+

Discussions similaires

  1. Changer le format DateTime sous SQL-Server 2005
    Par merovengian dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 26/12/2011, 11h03
  2. format date sous oracle
    Par jifi63 dans le forum Oracle
    Réponses: 5
    Dernier message: 30/11/2010, 19h01
  3. Réponses: 12
    Dernier message: 20/03/2010, 00h52
  4. Datetime sous SQL Server : modifier le format de la date ?
    Par Monkey_D.Luffy dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/06/2008, 11h35
  5. Réponses: 8
    Dernier message: 29/09/2006, 18h09

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