Volubis, le forum IBM i Index du Forum Volubis, le forum IBM i
avec les clubs Informatiques IPL et Bretagne.
 
 FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

(sans sujet)

 
Poster un nouveau sujet   Répondre au sujet    Volubis, le forum IBM i Index du Forum -> Système
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
Athalaric44



Inscrit le: 22 Juil 2016
Messages: 12

MessagePosté le: Jeu 09 Mai 2019, 11:18:33    Sujet du message: (sans sujet) Répondre en citant

Bonjour,

nous rencontrons une anomalie IBM i lors d'un calcul de date.

L'opération SQL suivante :
values date('0300-02-01') + 1 month
retourne la valeur '0300-02-29'
Nous avons le même résultat en RPG ( '0300-02-01' + %month(1) )

or l'an 300 n'est pas bisse xtile.

Le plus étrange est que l'opération SQL :
values date('0300-02-29')
retourne un anomalie...
Idem en RPG, un simple test IF sur la date calculée fait planter le pgm...

Vrai bug à signaler à IBM ?


Dernière édition par Athalaric44 le Jeu 09 Mai 2019, 14:45:24; édité 1 fois
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Athalaric44



Inscrit le: 22 Juil 2016
Messages: 12

MessagePosté le: Jeu 09 Mai 2019, 12:57:48    Sujet du message: (sans sujet) Répondre en citant

Dans le même genre :

values date('0300-02-01') + 28 days ==> 0300-02-29

alors que

values date('0300-02-01') + 29 days ==> 0300-03-02
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
mgris



Inscrit le: 04 Oct 2018
Messages: 2

MessagePosté le: Jeu 09 Mai 2019, 14:54:35    Sujet du message: (sans sujet) Répondre en citant

Bonjour
En fait c'est le 1er mars 300 qui n'existe pas, c'est ce qui explique vos résultats

values date('0300-03-01') retourne 0300-02-29

On considère en général que les dates avant le début du calendrier grégorien ne sont pas valide.
Mais le système accepte les années entre l'an 1 et l'an 9999 comme valables pour les calculs.
Extrait de Db2 for i SQL Reference sur les dates

Citation:
Date
A date is a three-part value (year, month, and day) designating a point in time
under the Gregorian calendar, which is assumed to have been in effect from the
year 1 A.D.
The range of the year part is 0001 to 9999.24 The date formats *JUL, *MDY, *DMY,
and *YMD can only represent dates in the range 1940 through 2039. The range of
the month part is 1 to 12. The range of the day part is 1 to x, where x is 28, 29, 30,
or 31, depending on the month and year.
The internal representation of a date is a string of 4 bytes that contains an integer.
The integer (called the Scaliger number) represents the date.
The length of a DATE column as described in the SQLDA is 6, 8, or 10 bytes,
depending on which format is used. These are the appropriate lengths for string
representations for the value.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Athalaric44



Inscrit le: 22 Juil 2016
Messages: 12

MessagePosté le: Jeu 09 Mai 2019, 15:41:33    Sujet du message: (sans sujet) Répondre en citant

Merci pour cette réponse détaillée.
On va tâcher d’éviter les dates trop anciennes... Very Happy
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Volubis, le forum IBM i Index du Forum -> Système Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com

Anti Bot Question MOD - phpBB MOD against Spam Bots