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 Firebird Discussion :

UDF et type date


Sujet :

SQL Firebird

  1. #1
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut UDF et type date
    Bonjour à tous,

    J'utilise Firebird 1.5.
    J'avais besoin d'une fonction qui me retourne le jour ouvrable entre une date donnée et un nombre de jour donné.
    Pour ça, j'ai crée un dll sous Delphi et j'ai importer la fonction en question.
    Mon problème c'est que si je teste la fonction sous Firebird avec IbExpert, la valeur de retour n'est pas bon alors que si j'appelle cette fonction sous Delphi, elle me renvoit le bon date.
    Alors je me demande si c'est un problème de type Date de Delphi avec le type Date de Firebird.

    Merci
    On progresse .....

  2. #2
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 52
    Points : 58
    Points
    58
    Par défaut
    Ca dépend peut être du dialect, pour le dialect 1 le type DATE = date + heure soit le TIMESTAMP en dialect 3. En dialect 3 le type DATE = juste la date.

    voila un bout de code pour transformer une date delphi en TIMESTAMP:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    const
      DateOffset = 15018;
      TimeCoeff = 864000000;
     
      procedure EncodeTimeStamp(const DateTime: TDateTime; v: PISCTimeStamp);
      begin
        v.timestamp_date := Round(int(DateTime)) + DateOffset;
        v.timestamp_time := ISC_TIME(Round(Frac(DateTime) * TimeCoeff));
      end;
    henri
    Henri Gourvest
    http://www.progdigy.com

  3. #3
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Je suis en dialecte 3 et ce que je veux c'est juste la Date sans l'heure. Ce qui m'intrige un peu c'est que le type TDate est declaré en TDateTime sous Delphi.

    Donc comment faire pour avoir le type Date en dialecte 3 sous Delphi.

    Merci
    On progresse .....

  4. #4
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 52
    Points : 58
    Points
    58
    Par défaut
    dans ce cas la c'est un type ISC_DATE(Integer) que tu vas échanger avec interbase dans ton UDF. la transformation est assez simple:
    ISC_DATE -> TDateTime = date - DateOffset
    TDateTime -> ISC_DATE = int(date) + DateOffset
    tel que DateOffset = 15018

    Henri
    Henri Gourvest
    http://www.progdigy.com

Discussions similaires

  1. Critères sur champ de type date
    Par blasco dans le forum Access
    Réponses: 2
    Dernier message: 29/10/2004, 09h48
  2. Réponses: 3
    Dernier message: 08/10/2004, 00h12
  3. BC6 inserer un enreg de type date/heure dans Access2003
    Par o_live dans le forum C++Builder
    Réponses: 2
    Dernier message: 25/06/2004, 11h13
  4. insertion d'un type date dans une table access
    Par monstour dans le forum ASP
    Réponses: 7
    Dernier message: 18/06/2004, 16h57
  5. utilisation du type DATE d'interbase
    Par dibak dans le forum InterBase
    Réponses: 4
    Dernier message: 05/01/2004, 15h03

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