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

Adaptive Server Enterprise Sybase Discussion :

Premier jour de la semaine courante


Sujet :

Adaptive Server Enterprise Sybase

  1. #1
    Membre habitué Avatar de ledu_alexandre
    Inscrit en
    Mai 2005
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2005
    Messages : 173
    Points : 153
    Points
    153
    Par défaut Premier jour de la semaine courante
    Bonjour,
    J'ai besoin d'un peu d'aide svp, je recherche la syntaxe me permettant de compléter la transaction suivante
    Pour connaitre la syntaxe du premier jour de la semaine courante..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT
        CONVERT(CHAR(8), GETDATE(),112) as "JOUR ACTUEL",
        CONVERT(CHAR(8), DATEADD(DAY, -1, GETDATE()),112) as "JOUR ACTUEL - 1 JOUR",
        CONVERT(CHAR(8), DATEADD(YEAR, -1, GETDATE()), 112) as "JOUR ACTUEL - 1 AN",
        CONVERT(CHAR(8), DATEADD(MONTH, -1, GETDATE()), 112) as "JOUR ACTUEL - 1 MOIS",
        CONVERT(CHAR(8), DATEADD(MONTH, -1, DATEADD(YEAR, -1, GETDATE())), 112) as "JOUR ACTUEL - 1 AN et 1 MOIS",
        DATEPART(MONTH, GETDATE()) as "MOIS EN COURS",
        DATEPART(MONTH, DATEADD(MONTH, -1, GETDATE())) as "MOIS PRECEDENT",
        DATEPART(WEEK, GETDATE()) as "SEMAINE COURANTE",
        DATEPART(WEEK, DATEADD(WEEK, -1, GETDATE())) as "SEMAINE PRECEDENTE",
        SUBSTRING(CONVERT(char(8), DATEADD(MONTH, 0,getdate()),112),1,6) + '01' as "PREMIER JOUR DU MOIS COURANT",
        CONVERT(char(4),DATEPART(YEAR, GETDATE())) + '0101' as  "PREMIER JOUR DE L ANNEE COURANTE",
        CONVERT(char(4),DATEPART(YEAR, GETDATE())-1) + '0101' as  "PREMIER JOUR DE L ANNEE PRECEDENTE"
    RESULT :
    20140807; 20140806; 20130807; 20140707; 20130707; 8; 7; 32; 31; 20140801; 20140101; 20130101;

    Et ma seconde question concerne une optimisation, qu'est il préférable de faire entre ces 2 syntaxes??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT 
        CONVERT(char(4), DATEPART(YEAR, GETDATE()))+CONVERT(char(1),DATEPART(MONTH, GETDATE()))+'01' as "PREMIER JOUR DU MOIS COURANT",
        SUBSTRING(CONVERT(char(8), DATEADD(MONTH, 0,getdate()),112),1,6) + '01' as "PREMIER JOUR DU MOIS COURANT"

    RESULT :
    2014801;2014801

    MERCI
    - TEAM B.O. -
    //-------------------------------------------------------------
    Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
    PS: La meilleure façon de prédire le futur, c'est de l'inventer

  2. #2
    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
    Bonjour,

    Le "premier jour de la semaine" varie d'un pays à l'autre... il faudra donc s'assurer de la bonne configuration de @@datefirst

    Vous pouvez vous appuyer sur une date arbitraire de référence pour effectuer votre calcul par addition de la différence en semaines.
    Si l'on considère le lundi comme premier jour de la semaine, prenons lundi prochain, le 18 aout 2014 comme référence :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CONVERT(CHAR(8),DATEADD(WEEK, DATEDIFF(WEEK, '20140818', GETDATE()), '20140818'),112) AS PremierJourSemaine

  3. #3
    Membre habitué Avatar de ledu_alexandre
    Inscrit en
    Mai 2005
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2005
    Messages : 173
    Points : 153
    Points
    153
    Par défaut
    Bonjour,
    Me posant la question a nouveau des années plustard, apres une recherche google je retombe sur ce post !

    Un grand merci pour cette réponse "tres Ingenieuse"!

    Du coup je partage ci-dessous mes petites syntaxes au cas ou cela interesse quelqu

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    SELECT
    -- JOUR ACTUEL
    	CONVERT(CHAR(8), GETDATE(),112) as "JOUR ACTUEL",
    -- JOUR PRECEDENT	
    	CONVERT(CHAR(8), DATEADD(DAY, -1, GETDATE()),112) as "JOUR PRECEDENT",
    -- JOUR ACTUEL - 1 AN	
    	CONVERT(CHAR(8), DATEADD(YEAR, -1, GETDATE()), 112) as "JOUR ACTUEL - 1 AN",
    -- JOUR ACTUEL - 1 MOIS
    	CONVERT(CHAR(8), DATEADD(MONTH, -1, GETDATE()), 112) as "JOUR ACTUEL - 1 MOIS",
    -- JOUR ACTUEL - 1 MOIS
    	CONVERT(CHAR(8), DATEADD(WEEK, -1, GETDATE()), 112) as "JOUR ACTUEL - 1 SEMAINE",
    -- JOUR ACTUEL - 1 AN et 1 MOIS
    	CONVERT(CHAR(8), DATEADD(MONTH, -1, DATEADD(YEAR, -1, GETDATE())), 112) as "JOUR ACTUEL - 1 AN et 1 MOIS",
    -- MOIS EN COURS
    	DATEPART(MONTH, GETDATE()) as "MOIS EN COURS",
    -- MOIS PRECEDENT
    	DATEPART(MONTH, DATEADD(MONTH, -1, GETDATE())) as "MOIS PRECEDENT",
    -- SEMAINE EN COURS
    	DATEPART(WEEK, GETDATE()) as "SEMAINE EN COURS",
    -- SEMAINE PRECEDENTE
    	DATEPART(WEEK, DATEADD(WEEK, -1, GETDATE())) as "SEMAINE PRECEDENTE",
     
    -- SUBSTRING
    -- PREMIER JOUR DE LA SEMAINE COURANTE	
    	CONVERT(CHAR(8),DATEADD(WEEK, DATEDIFF(WEEK, '20140818', GETDATE()), '20140818'),112) AS "PREMIER JOUR DE LA SEMAINE COURANTE",
    -- PREMIER JOUR DE LA SEMAINE PRECEDENTE
    	CONVERT(CHAR(8),DATEADD(WEEK, DATEDIFF(WEEK, '20140818', DATEADD(WEEK,-1,GETDATE())), '20140818'),112) AS "PREMIER JOUR DE LA SEMAINE PRECEDENTE",
    -- PREMIER JOUR DU MOIS EN COURS
         SUBSTRING(CONVERT(char(8), DATEADD(MONTH, 0,getdate()),112),1,6) + '01' as "PREMIER JOUR DU MOIS EN COURS",
    -- PREMIER JOUR DE L ANNEE EN COURS   
    	SUBSTRING(CONVERT(char(8), DATEADD(YEAR, 0,getdate()),112),1,4) + '0101' as "PREMIER JOUR DE L ANNEE EN COURS",
    -- PREMIER JOUR DE L ANNEE PRECEDENTE
    	SUBSTRING(CONVERT(char(8), DATEADD(YEAR, -1,getdate()),112),1,4) + '0101' as "PREMIER JOUR DE L ANNEE PRECEDENTE",
     
    -- SUBSTRING
    -- PREMIER JOUR DU MOIS EN COURS	
    	CONVERT(char(4), DATEPART(YEAR, GETDATE()))+CONVERT(char(1),DATEPART(MONTH, GETDATE()))+'01' as "PREMIER JOUR DU MOIS EN COURS",
    -- PREMIER JOUR DE L ANNEE EN COURS 	
    	CONVERT(char(4),DATEPART(YEAR, GETDATE())) + '0101' as  "PREMIER JOUR DE L ANNEE EN COURS",
    -- PREMIER JOUR DE L ANNEE PRECEDENTE	
    	CONVERT(char(4),DATEPART(YEAR, GETDATE())-1) + '0101' as  "PREMIER JOUR DE L ANNEE PRECEDENTE",
    -- LE DERNIER JOUR DU MOIS EN COURS
    	CONVERT(varchar(10),DATEADD(dd,-1,DATEADD(mm,1,DATEADD(dd,-(day(GETDATE())-1),GETDATE()))),112) as "LE DERNIER JOUR DU MOIS EN COURS"
    - TEAM B.O. -
    //-------------------------------------------------------------
    Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
    PS: La meilleure façon de prédire le futur, c'est de l'inventer

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

Discussions similaires

  1. [Dates] Comment obtenir le premier jour d'une semaine ?
    Par damien.vinouze dans le forum Langage
    Réponses: 8
    Dernier message: 09/05/2007, 08h26
  2. Calendar : Récupérer le premier jour de la semaine
    Par Sinan dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 07/05/2007, 15h51
  3. Réponses: 7
    Dernier message: 31/07/2006, 13h50
  4. Mettre lundi comme premier jour de la semaine?
    Par catoucat dans le forum Access
    Réponses: 2
    Dernier message: 14/06/2006, 07h05
  5. Récupérez premier jour de la semaine
    Par Krapulax dans le forum Requêtes
    Réponses: 1
    Dernier message: 07/10/2003, 17h18

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