Zitat Zitat von BenderD
@Birgitta

SQL ist streng typisiert, alles und jedes wird auf Typverträglichkeit überprüft und der 1.1.01 passt nun mal nicht in eine Feld mit einem Typ, der einen Wertebereich vom 1.1.1940 bis 31.12.2039 hat.

Dieter Bender
@ Dieter,

dann erkläre mir doch mal bitte, warum in folgendem Programm ein Satz ordnungsgemäss in eine Datei geschrieben und angezeigt wird, obwohl das verwendete SQL-Format nur ein 2-stelliges Jahr zulässt.

PHP-Code:
D MyRPGDate       S               D   DatFmt(*ISO)        
C/EXEC SQL Set Option DatFmt = *DMYCommit = *None                  
c
/END-EXEC                                                           
                                                                     
C
/EXEC SQL                                                           
C
Create Table QTEMP/MyDateTable                                    
C
+        (MyDate Date Not NULL with Default)                        
C/END-EXEC                                                           
                                                                     
C
/EXEC SQL Insert into QTEMP/MyDateTable Values(Date('0001-01-01'))  
c/END-EXEC                                                           
                                                                     
C
/EXEC SQL Select Min(MyDateinto :MyRPGDate from MyDateTable       
C
/END-EXEC                                                    
C     MyRPGDate     Dsply                                   
C                   
Eval      *InLR       = *On 
Und jetzt erkläre mir, warum im folgenden Beispiel ein Satz in die Datei geschrieben wird, aber beim SELECT INTO ein Abbruch erfolgt mit RNQ0114 - Die Jahresangabe eines Datums- oder Zeitmarkenwerts liegt nicht innerhalb des korrekten Bereichs (C G D F).
(Der einzige Unterschied ist, dass ich die Datums-Formate von SQL und RPG vertauscht habe)

PHP-Code:
D MyRPGDate       S               D   DatFmt(*DMY
C/EXEC SQL Set Option DatFmt = *ISOCommit = *None                   
c
/END-EXEC                                                            
                                                                      
C
/EXEC SQL                                                            
C
Create Table QTEMP/MyDateTable                                     
C
+        (MyDate Date Not NULL with Default)                         
C/END-EXEC                                                            
                                                                      
C
/EXEC SQL Insert into QTEMP/MyDateTable Values(Date('0001-01-01'))   
c/END-EXEC                                                            
                                                                      
C
/EXEC SQL Select Min(MyDateinto :MyRPGDate from MyDateTable        
C
/END-EXEC                                                     
C     MyRPGDate     Dsply                                     
C                   
Eval      *InLR       = *On 
Birgitta