Bonjour,
quel doit être mon type Cobol quand je récupère ou insère une DATE depuis un ordre SQL/DB2 ? Idem pour TIMESTAMP ou TIME ou DATETIME ...
Merci d'avance
Bonjour,
quel doit être mon type Cobol quand je récupère ou insère une DATE depuis un ordre SQL/DB2 ? Idem pour TIMESTAMP ou TIME ou DATETIME ...
Merci d'avance
Pour faire simple et en général ( il peut y avoir quelques cas particuliers et variantes selon la paramétrie du DB2 ) :
DATE = > PIC X(10)
par exemple :
2011-01-23
TIME = > PIC X(8)
par exemple :
19.09.01
TIMESTAMP = > PIC X(26)
par exemple :
2011-01-23-19.09.01.000000
Ma réponse portait sur un COBOL z/OS.
Z/OS bien sûr !
Luc, as-tu un exemple avec un SELECT avec un test "=" et un test "<" sur des dates
Par exemple, est-ce que cet ordre est valable ?
N'y a t-il pas une "convertion" DATE -> PIC X à déclarer quelque part ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 01 ma-date-var PIC X(10) 01 ma-date-to-check PIC X(10) ... EXEC SQL SELECT ma-date INTO :ma-date-var FROM MyTABLE WHERE ma-date = :ma-date-to-check END-EXEC
Comment faire un test "inférieur à" dans le WHERE ?
Merci encore
Oui cet ordre est valable à condition que la variable " ma-date-to-check " contienne une chaine de caractères qui soit une représentation valide d'une date.
Non. Aucune conversion n'est à déclarer.N'y a t-il pas une "convertion" DATE -> PIC X à déclarer quelque part ?
Il faut savoir qu'en DB2 z/OS ( et sans doute aussi pour les autres DB2 ), les données temporelles ( DATE , TIME et TIMESTAMP ) sont stockées dans un format interne à DB2 qui n'est jamais accessible directement. On manipule toujours des représentations externes de ces données sous forme de chaines de caractères. DB2 se débrouille pour faire les conversions et opérations nécessaires.
Où ça se complique un petit peu, c'est que cette représentation externe, en particulier pour le type DATE, peut elle même être paramètrée à différents niveaux et ceci pour des raisons culturelles d'affichage ( ah les américains et leur façon étrange d'afficher les dates ... ).
Le mieux est de se limiter aux formats par défaut et éviter d'utiliser des formats exotiques.
Un simple " < " devrait suffire.Comment faire un test "inférieur à" dans le WHERE ?
Eh bien merci pour tout
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager