Précédent   Forum du club des développeurs et IT Pro > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 08/07/2008, 15h48   #1
freud
Membre éprouvé
 
Homme
Analyste-développeur
Inscription : mai 2002
Messages : 994
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Analyste-développeur

Informations forums :
Inscription : mai 2002
Messages : 994
Points : 442
Points : 442
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
freud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2008, 17h07   #2
Barbibulle
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 726
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 43

Informations forums :
Inscription : octobre 2002
Messages : 1 726
Points : 2 375
Points : 2 375
Pourquoi vous ne déclarez pas tout simplement un champ de type time ?
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2008, 17h57   #3
makowski
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 256
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

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

Informations forums :
Inscription : mai 2002
Messages : 2 256
Points : 3 576
Points : 3 576
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
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2008, 18h08   #4
Barbibulle
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 726
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 43

Informations forums :
Inscription : octobre 2002
Messages : 1 726
Points : 2 375
Points : 2 375
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).
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2008, 19h40   #5
freud
Membre éprouvé
 
Homme
Analyste-développeur
Inscription : mai 2002
Messages : 994
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Analyste-développeur

Informations forums :
Inscription : mai 2002
Messages : 994
Points : 442
Points : 442
Citation:
Extract, extract, extract ....
Oui je sais mais ce n'est pas pour extraire une partie de l'heure ...

Citation:
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.

Citation:
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.
freud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2008, 21h55   #6
Barbibulle
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 726
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 43

Informations forums :
Inscription : octobre 2002
Messages : 1 726
Points : 2 375
Points : 2 375
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.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2008, 22h38   #7
freud
Membre éprouvé
 
Homme
Analyste-développeur
Inscription : mai 2002
Messages : 994
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Analyste-développeur

Informations forums :
Inscription : mai 2002
Messages : 994
Points : 442
Points : 442
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
freud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2008, 23h55   #8
makowski
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 256
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

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

Informations forums :
Inscription : mai 2002
Messages : 2 256
Points : 3 576
Points : 3 576
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
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2008, 10h45   #9
freud
Membre éprouvé
 
Homme
Analyste-développeur
Inscription : mai 2002
Messages : 994
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Analyste-développeur

Informations forums :
Inscription : mai 2002
Messages : 994
Points : 442
Points : 442
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.
freud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2008, 11h00   #10
makowski
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 256
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

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

Informations forums :
Inscription : mai 2002
Messages : 2 256
Points : 3 576
Points : 3 576
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
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2008, 11h11   #11
freud
Membre éprouvé
 
Homme
Analyste-développeur
Inscription : mai 2002
Messages : 994
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Analyste-développeur

Informations forums :
Inscription : mai 2002
Messages : 994
Points : 442
Points : 442
En effet, il faut d'abord consulter les Release notes.
Merci à vous Makowski et Barbibulle
freud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2012, 12h00   #12
jbrusselle
Invité de passage
 
Inscription : mai 2006
Messages : 10
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 10
Points : 3
Points : 3
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.
jbrusselle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2012, 20h46   #13
freud
Membre éprouvé
 
Homme
Analyste-développeur
Inscription : mai 2002
Messages : 994
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Analyste-développeur

Informations forums :
Inscription : mai 2002
Messages : 994
Points : 442
Points : 442
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 ?
freud est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h52.


 
 
 
 
Partenaires

Hébergement Web