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 :

Oracle SQL probleme conversion date [Débutant(e)]


Sujet :

SQL Oracle

  1. #1
    Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Janvier 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Janvier 2018
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Oracle SQL probleme conversion date
    Hello all,

    J'ai un problème de conversion de dates qui commence a m’exaspérer.

    Désolé si mon message n'est pas dans la bonne catégorie, je débute sur ce forum.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    --Pour info: Vdate = '05/01/2018';
    SELECT p.*
    FROM Prices p
    WHERE TO_CHAR(p.date_time, 'DD/MM/YYYY') = Vdate;

    J'obtiens bien une réponse de la part de la bdd. All good.

    Le probleme c'est que Vdate (python) arrive dans le systeme sous cette forme '2018-01-05 11:53:25' donc évidemment, j'ai aucun retour.
    J'ai essayé tout un tas de combinaisons, sans succes regardant sur les forums.

    Merci de votre aide précieuse.

    NB. Pour info, les dates sont stockés dans le systeme sous la forme dd-MMM-yy (pour le 5 Janvier 2018, ce sera 05-JAN-18)

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Citation Envoyé par BourneAgainstShell Voir le message
    les dates sont stockés dans le systeme sous la forme dd-MMM-yy (pour le 5 Janvier 2018, ce sera 05-JAN-18)
    Non. Le format dd-MMM-yy est sans doute celui qui est utilisé par défaut par l'applicatif que tu utilises pour visualiser tes données mais, si tes dates sont bien enregistrées dans des colonnes de type DATE, celles-ci sont enregistrées sus la forme d'un nombre décimal.
    Quant à la prise en charge du format de la date que tu reçois, il suffit de consulter la documentation de la fonction TO_CHAR pour y trouver la chaîne correspondant à ta configuration, soit dans ton cas : YYYY-MM-DD HH24:MI:SS.
    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.

  3. #3
    Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Janvier 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Janvier 2018
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour la réponse.

    Je sais qu'il est parfois pénible de ré-expliquer les fondamentaux d'autant que j'ai su résoudre ce genre de pbs par le passé... Bref, en continuant de chercher, j'ai réussi à résoudre mon probleme tout simplement avec une bete fonction SUBSTR.

    Du coup, j'ai ca et ca fonctionne tres bien :

    AND TO_CHAR(p.date_time, 'YYYY-MM-DD') = SUBSTR(Vdate,0,10);

    Merci à vous

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Ou même si le pilote qui connecte python à Oracle est correct, votre vdate est déjà une date.
    Il suffit alors d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where p.date_time = Vdate;
    Néanmoins, sous Oracle les dates ont une précision à la seconde. D'après votre dernier message vous voulez plutôt regarder à la journée.
    Je vous invite alors à écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    where p.date_time >= trunc(Vdate)
      and p.date_time <  trunc(Vdate) + 1;

  5. #5
    Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Janvier 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Janvier 2018
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Interessant Waldar. je vous remercie, je vais essayer.

  6. #6
    Membre chevronné
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Points : 1 878
    Points
    1 878
    Par défaut
    Si "p.date_time" est bien une colonne au format DATE, vous avez aussi cette possibilité

    1) Variable "Vdate" déclarée en tant que DATE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT p.*
    FROM Prices p
    WHERE TRUNC(p.date_time) = TRUNC(Vdate);
    2) Variable "Vdate" déclarée en tant que CHAR :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT p.*
    FROM Prices p
    WHERE TRUNC(p.date_time) = TO_DATE(Vdate, 'DD/MM/YYYY'));

  7. #7
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Les deux solutions que vous proposez ont le désavantage de rendre inutilisable un éventuel index sur la colonne de type date ce qui n'est pas le cas de la solution proposée par Waldar.

  8. #8
    Membre chevronné
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Points : 1 878
    Points
    1 878
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Les deux solutions que vous proposez ont le désavantage de rendre inutilisable un éventuel index sur la colonne de type date ce qui n'est pas le cas de la solution proposée par Waldar.
    Effectivement c'est l'un des gros désavantages si la colonne est indexée

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

Discussions similaires

  1. [SQL SERVER] Conversion date en string
    Par taska dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 31/05/2007, 15h26
  2. [SQL] Probleme de date
    Par LP-mpascolo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/05/2007, 09h26
  3. [Transact SQL] Probleme de date
    Par Wells dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/04/2007, 12h30
  4. [oracle 9i] probleme de date
    Par Herveg dans le forum Forms
    Réponses: 4
    Dernier message: 05/09/2006, 14h29
  5. [pl/sql] Probleme format date
    Par ra_inah dans le forum Oracle
    Réponses: 1
    Dernier message: 02/08/2006, 21h50

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