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

Développement SQL Server Discussion :

Récupérer une date à partir d'un numéro de semaine et d'une année. [2008R2]


Sujet :

Développement SQL Server

  1. #1
    Candidat au Club
    Homme Profil pro
    Statisticien
    Inscrit en
    Juillet 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Récupérer une date à partir d'un numéro de semaine et d'une année.
    Bonjour,

    Après de nombreuses recherches infructueuses, je m'en remets à vous.

    Comment, en T-SQL, faire pour récupérer les dates des jours constituants une semaine donnée.

    Exemple : pour la S24 de 2014 nous aurions pour résultats :
    06/06/2014
    10/06/2014
    11/06/2014
    12/06/2014
    13/06/2014
    14/06/2014
    15/06/2014

    Merci à vous !

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Sinon, il y a l'éternelle table calendrier, qui se veut bien plus utile qu'il n'y paraît !
    On ne jouit bien que de ce qu’on partage.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Sinon, il y a l'éternelle table calendrier, qui se veut bien plus utile qu'il n'y paraît !
    Effectivement, j'oubliais la solution la plus simple et la plus efficace !

  4. #4
    Candidat au Club
    Homme Profil pro
    Statisticien
    Inscrit en
    Juillet 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Merci à vous !

    Effectivement, la première convient :

    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
    30
    31
    CREATE FUNCTION dbo.fnGetDateFromWeekNo
    (@weekNo int , @yearNo  int)
    RETURNS smalldatetime
    AS
    BEGIN 
     
    DECLARE @tmpDate smalldatetime
     
     
    set @tmpdate= cast(cast (@yearNo as varchar) + '-01-01' as smalldatetime)
    -- jump forward x-1 weeks to save counting through the whole year 
    set @tmpdate=dateadd(wk,@weekno-1,@tmpdate)
     
    -- make sure weekno is not out of range
    if @WeekNo <= datepart(wk,cast(cast (@yearNo as varchar) + '-12-31' as smalldatetime))
    BEGIN
        WHILE (datepart(wk,@tmpdate)<@WeekNo)
        BEGIN
            set @tmpdate=dateadd(dd,1,@tmpdate)
        END
    END
    ELSE
    BEGIN
        -- invalid weeknumber given
        set @tmpdate=null
    END
     
     
    RETURN @tmpDate
     
    END
    Le pire c'est que je traîne déjà beaucoup mes guêtres sur StackOverflow...

    Par contre, le calendrier, c'est une bonne idée effectivement !

    Merci à vous.

  5. #5
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par ff.martin Voir le message
    Effectivement, la première convient :
    Pour des ricains peut-être, pour des européens... c'est moins sûr.

    Faites des tests pour 2016 par exemple, où, selon la norme ISO, la première semaine de l'année commencera le 3 janvier...

    Pour se conformer à la norme ISO, il faudrait utiliser le 4 et non le 1er janvier comme date de référence, et utiliser le DATEPART ISO_WEEK.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    Pour des ricains peut-être, pour des européens... c'est moins sûr.
    Comme tout ce que l'on trouve sur internet, il faut vérifier, modifier, adapter ;-)
    Par mon expérience, le numéro de semaine est pas mal spécifique à chaque entreprise :
    Mauvaise habitude prise il y a 50 ans, entreprise mère aux Îles Caïman, semaine iso mais mal algo programmée par un dev et on vit avec depuis, etc...

    Merci bien pour le DATEPART ISO_WEEK qui est apparu avec la version 2008 et que je viens de découvrir.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Obtenir une date en fonction du numéro de semaine
    Par Ska60 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 24/09/2022, 16h36
  2. Récupérer la date à partir d'un numéro de semaine et de l'année
    Par aurelientp dans le forum Général Java
    Réponses: 4
    Dernier message: 11/01/2010, 13h43
  3. [VB.Net] Obtenir une date à partir d'un numero de semaine
    Par tonysky dans le forum Windows Forms
    Réponses: 4
    Dernier message: 03/01/2007, 08h57
  4. Réponses: 6
    Dernier message: 25/09/2006, 14h51
  5. Réponses: 7
    Dernier message: 05/04/2006, 11h22

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