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

PL/SQL Oracle Discussion :

Conversion d'un horaire en VARCHAR32 vers un type DATE


Sujet :

PL/SQL Oracle

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Vatican

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 2
    Par défaut Conversion d'un horaire en VARCHAR32 vers un type DATE
    Bonjour à tous,

    Soit la table "TEST" suivante, avec deux colonnes format VARCHAR32:

    hdep harrivee
    10:12:43 10:13:06


    J'essaye de comparer les deux champs, pour définir le nombre de secondes qu'il y a entre les deux (une soustraction entre l'heure de d'arrivée et l'heure de départ). La seule façon de le faire à priori est de convertir au préalable les deux valeurs avec la fonction to_date.

    Je me lance:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select (to_date (harrivee, 'HH24:MI:SS')) - (to_date (hdep, 'HH24:MI:SS')) from TEST;
    Cela me donne un résultat en -0,00 et des bananes.

    Question: Savez vous si cela est réalisable, car d'après ce que je lis de part et d'autre, j'ai l'impression que la plus petite unité de temps que je pourrais obtenir lors d'une soustraction de ce type sera la journée, qu'il faudrait ensuite reconvertir en seconde?

    Avez vous une idée? Le temps de traitement importe peu.

    Merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    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 136
    Par défaut
    La différence que tu as calculée te donne bien un nombre de jours et une fraction de jour.
    Sachant qu'il y a 24 heures dans une journée, 60 minutes par heure et 60 secondes par minute, il ne reste plus qu'à faire une petite multiplication pour avoir un résultat en secondes...
    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
    Nouveau candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Vatican

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 2
    Par défaut
    Merci pour la confirmation.

    Si je continue dans ce sens:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select to_number((to_date (harrivee, 'HH24:MI:SS')) - (to_date (hdep, 'HH24:MI:SS')))*60*60*24 from TEST;
    J'obtiens des chiffres assez étonnants:
    -59,99999999999999999999
    -422,0000000000000000000
    -100,0000000000000000000

    Les résultats sont pourtant corrects, savez vous pourquoi ils sont en négatif?

    Merci d'avance!

  4. #4
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    1/ Tu dois avoir une erreur de données car avec l'exemple tu devrais avoir du positif. Affiche ls colonnes deb et arrivee.
    2/ Pas de to_number sur une différence de date (qui renvoie déjà un nombre)
    3/ Tu aimes les () ? Pourquoi encadrer les to_date ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT hdep, harrivee, ROUND(24*3600 * (TO_DATE(harrivee, 'HH24:MI:SS') - TO_DATE(hdep, 'HH24:MI:SS')),0) nbsec
    FROM (SELECT '10:12:43' hdep, ' 10:13:06' harrivee FROM dual)
     
    HDEP		HARRIVEE	NBSEC
    10:12:43	 10:13:06	23

Discussions similaires

  1. [HTML] conversion d'un tableau html statique vers excel
    Par More dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 21/08/2008, 17h30
  2. Conversion d'un string vers un type particulier
    Par Xorgnem dans le forum C++
    Réponses: 4
    Dernier message: 27/06/2007, 13h26
  3. Conversion d'un programme en C vers Delphi.
    Par jbrg dans le forum Delphi
    Réponses: 1
    Dernier message: 21/03/2007, 12h51
  4. Réponses: 5
    Dernier message: 12/10/2006, 13h49
  5. [TP7] Conversion de sources Turbo Pascal 7 vers Delphi 6
    Par M.Tamisier dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 21/04/2006, 21h08

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