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

 Firebird Discussion :

Date de paiement 00.00.0000


Sujet :

Firebird

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2022
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2022
    Messages : 45
    Points : 24
    Points
    24
    Par défaut Date de paiement 00.00.0000
    Bonjour,
    lorsque j'essaie de insert ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into T_FACTURE (FAC_ID, CLI_ID, PMT_CODE, FAC_DATE, FAC_PMT_DATE) values ( 507,  22,  '',  '31.05.1999',  '00.00.0000');
    j'obtiens le message d'erreur :
    Engine Message :
    value exceeds the range for valid dates

    la table en question a été créée comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    create table T_FACTURE(
    FAC_ID INTEGER primary key,
    CLI_ID INTEGER not null,
    PMT_CODE CHAR(8),
    FAC_DATE DATE not null,
    FAC_PMT_DATE DATE
    );
     
    --Index
    create unique index IDX_T_FACTURE_PK on T_FACTURE (FAC_ID);
    create index IDX_L_FAC_CLI_FK on T_FACTURE (CLI_ID);
    create index IDX_TJ_FAC_PMT_FK on T_FACTURE (PMT_CODE);

    c'est bien au niveau du champ FAC_PMT_DATE que le problème réside.... Je ne sais pas quoi faire (j'ai essayé de créer un domaine mais toujours la même erreur, j'ai aussi essay de recreate la table en insérant 'default current_date pour le champ en question mais toujours le même code d'erreur...)

    Merci d'avance pour vos avis

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    14 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 14 081
    Points : 38 121
    Points
    38 121
    Billets dans le blog
    59
    Par défaut
    https://firebirdsql.org/file/documen...-datetime.html
    Citation Envoyé par Manuel
    Le type de données DATE dans Dialect 3 ne stocke que la date sans heure. La plage disponible pour le stockage des données va du 1er*janvier au 31*décembre*9999.
    une date 00.00.0000 ne peut exister jour est compris entre 01 et 31 mois entre 01 et 12 je ne suis même pas sûr qu'il ait existé l'an 0000 (en tout cas pas dans le calendrier chrétien https://fr.wikipedia.org/wiki/Ann%C3%A9e_z%C3%A9ro)

    donc une date 00.00.0000 n'a jamais existé dans ce cas mettez plutôt NULL
    insert into T_FACTURE (FAC_ID, CLI_ID, PMT_CODE, FAC_DATE, FAC_PMT_DATE) values ( 507, 22, '', '31.05.1999', NULL);
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2022
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2022
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    Merci pour l'info, je vais voir ce que je peux faire.

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    8 968
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : mars 2010
    Messages : 8 968
    Points : 33 529
    Points
    33 529
    Billets dans le blog
    3
    Par défaut
    Souvent, si on veut exprimer la date la plus petite possible, on utilise la valeur '0001-01-01' (premier janvier de l'an 1), et pour la date la plus grande, on utilise la valeur '9999-12-31'.
    Ces valeurs sont acceptées dans de nombreux SGBD, à vérifier sous FB (je n'en ai pas sous la main)

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    14 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 14 081
    Points : 38 121
    Points
    38 121
    Billets dans le blog
    59
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    à vérifier sous FB (je n'en ai pas sous la main)
    C'est le cas.

    Si j'indique d'utiliser NULL à la place c'est qu'ainsi, on peut indiquer qu'aucune date n'est indiquée.
    NULL pouvant être testé pour éviter toute ligne WHERE DATE_PAIEMENT IS NOT NULL
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2022
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2022
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    Bonjour SergioMaster,

    Je vous remercie pour cette précision apportée par rapport à votre précédent message. J'ai par ailleurs remplacé 00.00.0000 par NULL comme vous me l'avez recommandé, et cela m'a permis d'avancer dans mon projet sans soucis.

    Je marque cette discussion comme résolue.

    A+

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/11/2009, 11h57
  2. SQL et date de paiement
    Par Pgs dans le forum Langage SQL
    Réponses: 6
    Dernier message: 26/07/2007, 18h27
  3. [MySQL] Faire un INSERT d'une date format Francais dans un champ date '0000-00-00' ?
    Par bilou95 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 20/11/2006, 14h49
  4. Date Du jour au format 00/00/0000
    Par Meunier dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 06/09/2006, 00h05
  5. Affiche de la date 0000-00-00 par défaut !
    Par Zebulonn dans le forum Requêtes
    Réponses: 13
    Dernier message: 01/07/2005, 12h36

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