Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
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 21/03/2011, 17h55   #1
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 468
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 468
Points : 11
Points : 11
Par défaut Utilisation d'une fonction (Convertion Date)

Bonjour à tous,


Version SQL: sql server 2000 Sp4

J'ai t ceci comme fonction :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
CREATE FUNCTION dbo.fnGetDateFromYearWeekWeekday
(
    @Year INT,
    @Week INT,
    @Weekday INT
)
RETURNS DATETIME
AS
BEGIN
    RETURN CASE
                WHEN @Year < 1900 OR @Year > 9999 THEN NULL
                WHEN @Week < 1 OR @Week > 53 THEN NULL
                WHEN @Weekday < 1 OR @Weekday > 7 THEN NULL
                WHEN @Year = 9999 AND @Week = 52 AND @Weekday > 5 THEN NULL
                WHEN DATEPART(YEAR, DATEADD(DAY, 7 * @Week + DATEDIFF(DAY, 4, DATEADD(YEAR, @Year - 1900, 7)) / 7 * 7, -4)) <> @Year THEN NULL
                ELSE DATEADD(DAY, 7 * @Week + DATEDIFF(DAY, 4, DATEADD(YEAR, @Year - 1900, 7)) / 7 * 7, @Weekday - 8)
            END
END
Le but j'ai un format ANNEE N° semaine N° Jour.

Et je voudrait retrouver la date.

J'ai excuter cette fonction je la retrouve bien sur mon serveur SQL,

puis j'ai tapé ceci:

Code :
1
2
3
4
5
6
7
8
9
10
11
 
 
DECLARE @Year INT
DECLARE @Week INT
DECLARE @Weekday INT
 
SET    @Year ='2011'
SET    @Week='12'
SET    @Weekday='5'
 
EXECUTE dbo.fnGetDateFromYearWeekWeekday @Year,@Week,@Weekday
Dans l'outil analyseur de requête il me met aucune erreur mais il me retourne rien comme résultat.

Quel erreur est-je commis?

guigui69
guigui69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 18h50   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
Au lieu d'utiliser une fonction qui est totalement contre performant, utilisez une table de date... Ca c'est optimisé !

Lisez l'article que j'ai écrit à ce sujet : http://sqlpro.developpez.com/cours/gestiontemps/

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 20h30   #3
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 468
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 468
Points : 11
Points : 11
En fait j'ai une requête ou j'ai ceci comme champ:

Année | Semaine | Le jour de la semaine|

J'aurai besoin de retrouver la date de ceci

Merci

guigui69
guigui69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 22h01   #4
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
Remplace ton EXECUTE par SELECT comme ci-dessous :

Code :
1
2
3
4
5
6
7
8
9
DECLARE @Year INT
DECLARE @Week INT
DECLARE @Weekday INT
 
SET    @Year ='2011'
SET    @Week='12'
SET    @Weekday='5'
 
SELECT  dbo.fnGetDateFromYearWeekWeekday (@Year,@Week,@Weekday)
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h35.


 
 
 
 
Partenaires

Hébergement Web