Overblog Tous les blogs Top blogs Technologie & Science Tous les blogs Technologie & Science
Editer l'article Suivre ce blog Administration + Créer mon blog
MENU
Publicité
Attn's blog

mdy2yymd

18 Octobre 2008 , Rédigé par Milan Publié dans #Sql

//  Nous voici dans l'aspect procédurale de SQL, 
// SQL PSM (Persistent Stored Modules) ou SQL PL (Procedural Language) ou SPL

// Certains fichiers systèmes AS/400 gérent les dates à l'aide de 2 champs,
// La fonction SQL ci-dessous les rend un peu plus pratique - pour le tri - et lisible...
 
drop function mdy2yymd £


create function mdy2yymd (
cent varchar(1) ,
mdy varchar(6) )

returns char(8)

 

a1: begin atomic
declare yy char ( 2 ) ;
declare yymd char ( 8 ) ;

 

if cent='0' then
set yy ='19';
elseif cent='1' then
set yy ='20';
end if;

 

set yymd = yy ||
substr ( mdy , 5 , 2 ) ||
substr ( mdy , 1 , 2 ) ||
substr ( mdy , 3 , 2 ) ;

return yymd ;

end £

 

 

select mdy2yymd('0', '123198') date from sysibm.sysdummy1 £

 

Voici un lien vers la doc "IBM i"
Et un vers "DB2 LUW"

Attn, concernants notamment les "control statements", il existe des différences souvent étranges entre les 2 systèmes... Par exemple, sur AS/400, la fonction ci-dessus peut être écrite avec un

    case

    when cent='0' then set yy ='19';
    when cent='1' then set yy ='20';
              
  end case;  


 
alors que cette instruction de test n'est pas possible dans une fonction sur DB2 LUW... Bravo le "i" !

Publicité
Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article