Bonjour,
Est-il possible sous Firebird 1.5, dans une procédure stockée, de déterminer quel est le jour de la semaine qui correspond à une date donnée ?
Merci.
Bonjour,
Est-il possible sous Firebird 1.5, dans une procédure stockée, de déterminer quel est le jour de la semaine qui correspond à une date donnée ?
Merci.
Tu peux utiliser une UDF telle que DOW et l'inclure dans un CASE...WHEN
Qu'en penses-tu ?
Je ne maîtrise pas du tout les fonctions externes... Peux-tu m'en dire plus ? Comment faut-il faire pour créer la fonction ?
Merci.
J'ai trouvé une solution qui fonctionne avec procedure stockée...
En gros, je calcule le reste d'une division par 7 d'une différence de 2 dates(dont je connais le jour de l'une d'elles)
Voici le code :
Merci quand même pour la suggestion des fonctions externes ! Je vais m'y mettre sérieusement...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 set term ^; create procedure DOW (datejour date) returns (numjour integer, jour varchar(8)) as begin for -- le 7 janvier 1980 était un lundi -- la différence entre 2 dates renvoit une valeur entière -- comme on travaille sur des integers, (x/7)*7 renvoit le multiple de 7 -- directement inférieur à x, donc x-(x/7)*7 = modulo select distinct (:datejour-cast('1980/01/07' as date))-(:datejour-cast('1980/01/07' as date))/7*7 from RDB$DATABASE -- la table du from n'a pas d'importance donc table système, qui existe toujours into :numjour do begin if (numjour < 0) then numjour = 7 + :numjour; if (numjour = 0) then jour = 'lundi'; if (numjour = 1) then jour = 'mardi'; if (numjour = 2) then jour = 'mercredi'; if (numjour = 3) then jour = 'jeudi'; if (numjour = 4) then jour = 'vendredi'; if (numjour = 5) then jour = 'samedi'; if (numjour = 6) then jour = 'dimanche'; suspend; end end^ set term ;^
@+![]()
Le site suivant te propose de télécharger une librairie contenant une grande diversité d'UDF opérant sur les dates, string, la trigonométrie, etc.http://rfunc.sourceforge.net/ et dans l'archive que tu peux télécharger il y a des fichiers SQL contenant la déclaration de chacune des UDF de la librairie."UDF : User Defined Functions. Il s'agit de fonctions de bibliothèques déclarées par le développeur.
Les fonctions utilisées sont incluses dans InterBase/Firebird, cependant, il est possible d'en créer soit-même"
Si tu fais quelques recherches sur les forums avec les mots clés tels que "UDF", "rfunc" tu trouveras rapidement + d'infos
Partager