IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Utilisation d'une fonction (Convertion Date)


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    819
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 819
    Points : 49
    Points
    49
    Par défaut Utilisation d'une fonction (Convertion Date)
    Bonjour à tous,


    Version SQL: sql server 2000 Sp4

    J'ai t ceci comme fonction :

    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
     
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 901
    Points : 53 143
    Points
    53 143
    Billets dans le blog
    6
    Par défaut
    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 +

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    819
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 819
    Points : 49
    Points
    49
    Par défaut
    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

  4. #4
    Membre émérite

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Points : 2 856
    Points
    2 856
    Par défaut
    Remplace ton EXECUTE par SELECT comme ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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)

Discussions similaires

  1. Réponses: 8
    Dernier message: 29/06/2006, 15h37
  2. Réponses: 3
    Dernier message: 29/04/2006, 13h02
  3. Réponses: 3
    Dernier message: 14/04/2006, 19h36
  4. Utilisation d'une fonction Transact-SQL ds une requête SQL
    Par Fl0ppeur dans le forum Langage SQL
    Réponses: 1
    Dernier message: 21/02/2006, 13h42
  5. Utilisation d'une fonction dans une procedure
    Par MaxiMax dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 09/08/2005, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo