Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/08/2005, 14h37   #1
SLE
Membre chevronné
 
Avatar de SLE
 
Homme Serge LESPAGNARD
Consultant informatique
Inscription : janvier 2004
Messages : 588
Détails du profil
Informations personnelles :
Nom : Homme Serge LESPAGNARD
Âge : 38
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : janvier 2004
Messages : 588
Points : 732
Points : 732
Par défaut Déterminer le jour de la semaine

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.
SLE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2005, 15h50   #2
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
Tu peux utiliser une UDF telle que DOW et l'inclure dans un CASE...WHEN

Qu'en penses-tu ?
__________________
Modérateur des forums Oracle et Langage SQL
Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2005, 16h57   #3
SLE
Membre chevronné
 
Avatar de SLE
 
Homme Serge LESPAGNARD
Consultant informatique
Inscription : janvier 2004
Messages : 588
Détails du profil
Informations personnelles :
Nom : Homme Serge LESPAGNARD
Âge : 38
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : janvier 2004
Messages : 588
Points : 732
Points : 732
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.
SLE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2005, 22h36   #4
SLE
Membre chevronné
 
Avatar de SLE
 
Homme Serge LESPAGNARD
Consultant informatique
Inscription : janvier 2004
Messages : 588
Détails du profil
Informations personnelles :
Nom : Homme Serge LESPAGNARD
Âge : 38
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : janvier 2004
Messages : 588
Points : 732
Points : 732
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 :

Code :
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 ;^
Merci quand même pour la suggestion des fonctions externes ! Je vais m'y mettre sérieusement...
@+
SLE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2005, 08h19   #5
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
Citation:
"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"
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.

Si tu fais quelques recherches sur les forums avec les mots clés tels que "UDF", "rfunc" tu trouveras rapidement + d'infos
__________________
Modérateur des forums Oracle et Langage SQL
Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2005, 08h38   #6
SLE
Membre chevronné
 
Avatar de SLE
 
Homme Serge LESPAGNARD
Consultant informatique
Inscription : janvier 2004
Messages : 588
Détails du profil
Informations personnelles :
Nom : Homme Serge LESPAGNARD
Âge : 38
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : janvier 2004
Messages : 588
Points : 732
Points : 732
Merci pour l'info !
@+
SLE est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h12.


 
 
 
 
Partenaires

Hébergement Web