Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 13 sur 13
  1. #1
    Membre éprouvé
    Homme Profil pro
    Analyste-développeur
    Inscrit en
    mai 2002
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Analyste-développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 998
    Points : 440
    Points
    440

    Par défaut Conversion heure en Integer

    Bonjour,

    J'aimerais savoir svp si il y a un moyen de convertir en Integer une heure saisie dans une application pour que je puisse la stocker dans un champ d'une table ?

    Quelque chose comme le CAST (current_time as Integer)

    Je vous remercie

  2. #2
    Expert Confirmé Avatar de Barbibulle
    Profil pro Frédéric
    Inscrit en
    octobre 2002
    Messages
    1 789
    Détails du profil
    Informations personnelles :
    Nom : Frédéric
    Âge : 44

    Informations forums :
    Inscription : octobre 2002
    Messages : 1 789
    Points : 2 607
    Points
    2 607

    Par défaut

    Pourquoi vous ne déclarez pas tout simplement un champ de type time ?

  3. #3
    Expert Confirmé

    Homme Profil pro Philippe Makowski
    Consultant spécialité Firebird
    Inscrit en
    mai 2002
    Messages
    2 313
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe Makowski
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 2 313
    Points : 3 561
    Points
    3 561

    Par défaut

    Extract, extract, extract ....
    ça existe depuis très très longtemps (avant même que Firebird ne s'appelle Firebird)

    cf :http://www.firebirdsql.org/refdocs/l...5-extract.html
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  4. #4
    Expert Confirmé Avatar de Barbibulle
    Profil pro Frédéric
    Inscrit en
    octobre 2002
    Messages
    1 789
    Détails du profil
    Informations personnelles :
    Nom : Frédéric
    Âge : 44

    Informations forums :
    Inscription : octobre 2002
    Messages : 1 789
    Points : 2 607
    Points
    2 607

    Par défaut

    Ah on n'a apparemment pas compris la même chose du problème posé .

    Moi j'ai compris qu'il saisissait dans une heure/minute/sec dans une application et il voulait l'enregistrer dans la base de données.

    Et Makowski a compris qu'il cherchait à extraire l'heure d'un champ Time (ou timestamp).

  5. #5
    Membre éprouvé
    Homme Profil pro
    Analyste-développeur
    Inscrit en
    mai 2002
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Analyste-développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 998
    Points : 440
    Points
    440

    Par défaut

    Extract, extract, extract ....
    Oui je sais mais ce n'est pas pour extraire une partie de l'heure ...

    Moi j'ai compris qu'il saisissait dans une heure/minute/sec dans une application et il voulait l'enregistrer dans la base de données.
    Exactement ca mais transformer en integer parce que j'ai vu ca dans une BD FireBird on saisi l'heure dans un DBGrid et c'est stocké en integer et ensuite pour lire cette heure stocker on récupere cette valeur integer et on la divise par 60.

    Pourquoi vous ne déclarez pas tout simplement un champ de type time ?
    Oui si je ne trouve pas je ferais cela c'etait juste pour eviter de creer des champs supplémentaire.

  6. #6
    Expert Confirmé Avatar de Barbibulle
    Profil pro Frédéric
    Inscrit en
    octobre 2002
    Messages
    1 789
    Détails du profil
    Informations personnelles :
    Nom : Frédéric
    Âge : 44

    Informations forums :
    Inscription : octobre 2002
    Messages : 1 789
    Points : 2 607
    Points
    2 607

    Par défaut

    Je crois que c'est un peu confus dans votre esprit.

    Si dans votre application vous demandez de saisir une heure (donc un simple chiffre compris entre 0 et 24) il vous suffit de l enregistrer dans la base dans un smallint.

    Si vous voulez enregistrer une heure avec des minutes et pourquoi pas seconde utilisez simplement le type Time. Je ne vois pas l'intérêt qu'il y aurait à le transformer en integer...

    Vous confondez peut etre avec un post qui parle du format date et time. En interne ces types des données sont en effet stoquées sous forme de nombre de jour depuis une date prise pour origine et time le nombre de milli-seconde depuis 00:00:00.000.

  7. #7
    Membre éprouvé
    Homme Profil pro
    Analyste-développeur
    Inscrit en
    mai 2002
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Analyste-développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 998
    Points : 440
    Points
    440

    Par défaut

    non je ne pense pas que c'est confus...... je pouvais trés bien utiliser le type time pour définir un interval de durée d'ailleurs c'est la seule chose qui se présente mais le problème est que j'ai vu des heures (par ex : 12:15:00) stocker en entier mais bon.... j'utiliserais le type time pourquoi se compliquer les choses.

    Merci quand même

  8. #8
    Expert Confirmé

    Homme Profil pro Philippe Makowski
    Consultant spécialité Firebird
    Inscrit en
    mai 2002
    Messages
    2 313
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe Makowski
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 2 313
    Points : 3 561
    Points
    3 561

    Par défaut

    si c'est pour stocker un interval de temps, alors non, il ne faut pas utiliser le type Time
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  9. #9
    Membre éprouvé
    Homme Profil pro
    Analyste-développeur
    Inscrit en
    mai 2002
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Analyste-développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 998
    Points : 440
    Points
    440

    Par défaut

    Bonjour,

    En effet le type time pour un interval de temps...ca marche pas je n'obtiens pas le bon résultat lorsque je fais la différence entre 2 heures mais par contre j'ai réussi à stocker l'heure en type Integer ce sont les minutes qui sont stockées :
    Code :
    1
    2
     
    SELECT EXTRACT(HOUR FROM TIME1)*60 + EXTRACT(MINUTE FROM TIME1) FROM TEST;
    TIME1 etant un champ de type Time (juste pour le test)
    je supposerais qu'il est récuperer en tant que valeur Time depuis le client

    Pour 07:35:00 par exemple, ca donne 455 minutes.
    Pour récuperer l'heure, on fait 455 DIV 60 ca donne la partie entiere qui est l'heure. Pour obtenir les minutes, on fait 455 MOD 60. Mais comme j'arrive pas à déclarer l'opérateur modulo en tant qu'UDF (curieux ...il est pourtant bien dans ib_udf2 mais pas de DLL correspondante) alors je fais autrement ou sinon depuis l'application cliente.

  10. #10
    Expert Confirmé

    Homme Profil pro Philippe Makowski
    Consultant spécialité Firebird
    Inscrit en
    mai 2002
    Messages
    2 313
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe Makowski
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 2 313
    Points : 3 561
    Points
    3 561

    Par défaut

    MOD MOD( <number>, <number> ) Modulo: MOD(X, Y) returns the remainder part of the division of X by Y.

    cf http://www.firebirdsql.org/rlsnotesh...rnfb210-appx-A

    fonction interne dans Firebird 2.1
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  11. #11
    Membre éprouvé
    Homme Profil pro
    Analyste-développeur
    Inscrit en
    mai 2002
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Analyste-développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 998
    Points : 440
    Points
    440

    Par défaut

    En effet, il faut d'abord consulter les Release notes.
    Merci à vous Makowski et Barbibulle

  12. #12
    Invité régulier
    Inscrit en
    mai 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 11
    Points : 5
    Points
    5

    Par défaut Requete finale

    Bonjour,

    Votre requete m'interesse fortement.
    C'est exactement ce que je recherche.
    Pouvez vous me donner le résultat de votre requete finale intégrant le modulo?
    Je n'arrive pas à la mettre en place.
    Il n'arrive pas à faire le modulo d'un datetime.

    Merci d'avance.

  13. #13
    Membre éprouvé
    Homme Profil pro
    Analyste-développeur
    Inscrit en
    mai 2002
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Analyste-développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 998
    Points : 440
    Points
    440

    Par défaut

    Bonsoir,

    Désolé pour le temps à répondre je n'ai plus remis les pieds ici depuis un bon bout de temps. Mais mieux vaut tard que jamais dit-on (????)

    Je ne me souviens plus de cette requête (ca date de 2008)
    parce que je crois l'avoir abandonner. Je ne sais même plus dans quelle contexte je voulais l'utiliser. Mais en tout cas les SELECT EXTRACT donnent de bons résultats sinon, que voulez-vous faire exactement ?

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •