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 :

Construction d'une table calendrier


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Points : 71
    Points
    71
    Par défaut Construction d'une table calendrier
    Bonjour à tous ,

    Je souhaite créer une table calendrier pour deux année ex: 2012 et 2013 qui contiendra l'année , date du début de semaine ,date de fin de semaine et le numéro de semaine.


    Avez vous une idée sur le script ?

    Merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Points : 1 049
    Points
    1 049
    Par défaut
    Voici un exemple de table calendrier que j'ai trouvé sur google :
    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
    32
    33
    34
     
    CREATE TABLE [dbo].calendrier(
    	[id] [int] IDENTITY(1,1) NOT NULL,
    	[fulldate] [date] NOT NULL,
    	[annee]  AS (datepart(year,[fulldate])) PERSISTED,
    	[semestre]  AS ((CONVERT([char](4),datepart(year,[fulldate]))+'_')+case when datepart(month,[fulldate])<(7) then '1' else '2' end) PERSISTED,
    	[trimestre]  AS ((CONVERT([char](4),datepart(year,[fulldate]))+'_')+case when datepart(month,[fulldate])<(4) then '1' else case when datepart(month,[fulldate])<(7) then '2' else case when datepart(month,[fulldate])<(10) then '3' else '4' end end end) PERSISTED,
    	[mois]  AS ((CONVERT([char](4),datepart(year,[fulldate]))+'_')+case when len(CONVERT([varchar](2),datepart(month,[fulldate])))=(1) then '0'+CONVERT([varchar](2),datepart(month,[fulldate])) else CONVERT([varchar](2),datepart(month,[fulldate])) end) PERSISTED,
    	[semaine]  AS ((CONVERT([char](4),datepart(year,[fulldate]))+'_')+case when len(CONVERT([varchar](2),datepart(week,[fulldate])))=(1) then '0'+CONVERT([varchar](2),datepart(week,[fulldate])) else CONVERT([varchar](2),datepart(week,[fulldate])) end),
    	[jour]  AS ((((CONVERT([char](4),datepart(year,[fulldate]))+'_')+case when len(CONVERT([varchar](2),datepart(month,[fulldate])))=(1) then '0'+CONVERT([varchar](2),datepart(month,[fulldate])) else CONVERT([varchar](2),datepart(month,[fulldate])) end)+'_')+case when len(CONVERT([varchar](2),datepart(day,[fulldate])))=(1) then '0'+CONVERT([varchar](2),datepart(day,[fulldate])) else CONVERT([varchar](2),datepart(day,[fulldate])) end) PERSISTED,
     CONSTRAINT [PK_calendrier] PRIMARY KEY CLUSTERED 
    (
    	[id] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]
     
    GO
     
    DECLARE @DATEDEBUT DATETIME
    DECLARE @DATEFIN DATETIME
    SET @DATEDEBUT = '20120101'
    SET @DATEFIN = '20131231'
    ;with mycte as
    (
    select @DATEDEBUT DateValue
    union all
    select DateValue + 1
    from    mycte   
    where   DateValue + 1 < @DATEFIN
    )
    INSERT INTO calendrier([fulldate])
    select CAST(DateValue as DATE)
    from    mycte
    OPTION (MAXRECURSION 0)
    Tu n'as plus qu'à ajouter les colonnes manquantes...

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2008
    Messages
    699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2008
    Messages : 699
    Points : 586
    Points
    586
    Par défaut
    Avec le code de remplissage

    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
    CREATE TABLE [dbo].[Calendrier](
    	[Date] [date] NOT NULL,
    	[Mois] [int] NULL,
    	[Annee] [int] NULL,
    	[Semaine] [int] NULL,
    	[JourSemaine] [int] NULL,
    	[DateDimanche] [date] NULL,
     CONSTRAINT [PK_Calendrier] PRIMARY KEY CLUSTERED 
    (
    	[Date] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    GO
     
     
    SET DATEFIRST 1
    GO
     
    Declare @Date Date = (select max(Date) from Calendrier )
    IF @Date IS NULL
    BEGIN SET @Date = '19741231' END
    SET @Date = dateadd(day,1,@date)
    insert into Calendrier
    SELECT @Date Date, DATEPART(month,@date) Mois, DATEPART(Year,@date) Annee,dbo.fNoSemaine_Groupe(@Date) Semaine,DATEPART(weekday,@Date)-Round(@@DATEFIRST/7,0) JourSemaine,Dbo.GET_DATE_DIM(@Date) DateDimanche
    GO 30000

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par darkelend Voir le message
    Voici un exemple de table calendrier que j'ai trouvé sur google :
    [code]
    CREATE TABLE [dbo].calendrier(
    [id] [int] IDENTITY(1,1) NOT NULL,
    [fulldate] [date] NOT NULL,
    [annee] AS (datepart(year,[fulldate])) PERSISTED,

    Tu n'as plus qu'à ajouter les colonnes manquantes...
    Merci pour ta réponse ton code n'est pas mal mais je dois cela dit essayer de comprendre les fonction date.

    Cela dit je ne sais pas comment je pourrais récupérer la date qui correspond au début et fin de semaine !!!

    T'as tapé quoi sur google ? j'ai fait pas mal de recherches et je n'ai pas vraiment trouvé de bons exemples .

  5. #5
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Points : 1 049
    Points
    1 049
    Par défaut
    Consulte le blog d'Elsuket pour y trouver tes réponses.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par darkelend Voir le message
    Consulte le blog d'Elsuket pour y trouver tes réponses.
    Ok je vais voir ça Merci

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 917
    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 917
    Points : 51 693
    Points
    51 693
    Billets dans le blog
    6

  8. #8
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Bonjour Frédéric,

    C'est déjà un peu plus complexe (J'avais hésité à mettre ton lien j'avoue)


Discussions similaires

  1. Réponses: 7
    Dernier message: 13/11/2014, 11h57
  2. [WD19] Construction d'une table hiérarchique de fichier
    Par Tchupacabra dans le forum WinDev
    Réponses: 1
    Dernier message: 26/06/2014, 18h18
  3. [2012] Création d'une table calendrier
    Par Adrien.B dans le forum Développement
    Réponses: 3
    Dernier message: 25/09/2013, 14h43
  4. [OL-2003] Importation d'une table access dans le calendrier outlook
    Par ls8ls8 dans le forum VBA Outlook
    Réponses: 0
    Dernier message: 09/07/2009, 19h22
  5. Générer un calendrier dans une table
    Par freud dans le forum Bases de données
    Réponses: 9
    Dernier message: 06/04/2007, 14h26

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