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 :

Transformer un format 'ANNEEMOIS' en date du dernier jours du mois


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 55
    Points
    55
    Par défaut Transformer un format 'ANNEEMOIS' en date du dernier jours du mois
    Bonjour,

    N'étant pas vraiment à l'aise avec le language SQL j'ai un souci.

    J'ai une requête du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Select F.ISIN, F.LibClient, F.Periode, P.Quantite + Sum( Qte ) From #FLUX F Inner Join #POSITIONS P on P.Code = F.ISIN and P.Intitule = F.LibClient Group By F.ISIN, F.LibClient, F.Periode, P.Quantite
    Hors période est une variable Char (6) (Format 'AAAAMM') que je voudrais tranformer en DateTime (JJ/MM/AAAA HH:MM:SS) du dernier jour du mois.

    Exemple pour F.Periode au lieu de '200804' je voudrais '30/04/2008 00:00:00'

    J'imagine qu'il y a une solution simple !

    Merci d'avance à vous !

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Points : 1 745
    Points
    1 745
    Par défaut
    Si tu fais des recherches sur le forum, tu trouveras cette solution, première date du mois + 1 mois - 1 jour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DECLARE @MADATE AS CHAR(6)
     
    SET @MADATE = '042008';
     
    SELECT @MADATE,DATEADD(d,-1,DATEADD(mm,1,(CAST('01/' + SUBSTRING(@MADATE,1,2) + '/' + SUBSTRING(@MADATE,3,4) AS DATETIME))))

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Ou encore :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT F.ISIN,
    	F.LibClient,
    	F.Periode,
    	P.Quantite + SUM(Qte)
    	DATEADD(day, -1, DATEADD(month, 1, CONVERT(DATETIME, F.Periode + '01' , 112)))
    FROM #FLUX F
    INNER JOIN #POSITIONS P
    	ON P.Code = F.ISIN
    	AND P.Intitule = F.LibClient
    GROUP BY F.ISIN, F.LibClient, F.Periode, P.Quantite
    Merci ylarvor jour pour cette astuce:

    première date du mois + 1 mois - 1 jour

  4. #4
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 55
    Points
    55
    Par défaut
    Merci de vos réponses. Je l'ai ai essayées toutes les 2.

    1/ Le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DECLARE @MADATE AS CHAR(6)
     
    SET @MADATE = '042008';
     
    SELECT @MADATE,DATEADD(d,-1,DATEADD(mm,1,(CAST('01/' + SUBSTRING(@MADATE,1,2) + '/' + SUBSTRING(@MADATE,3,4) AS DATETIME))))
    Me renvoi la date : 2008-02-03 00:00:00.000

    Ce n'est pas le dernier jour du mois d'avril 2008 et ce n'est pas le bon format

    2/

    En mettant la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DATEADD(day, -1, DATEADD(month, 1, CONVERT(DATETIME, F.Periode + '01' , 112)))
    J'ai le message d'erreur suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Msg*170, Niveau*15, État*1, Ligne*93
    Line 93: Incorrect syntax near 'day'.
    Voyez vous d'où peut provenir le problème ?

    Merci encore !

  5. #5
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 55
    Points
    55
    Par défaut
    MEA CULPA elsuket, ton code marche trés bien, j'avais oublié une virgule.

    MERCI BEAUCOUP !

  6. #6
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Pas de problème

    Heureusement j'ai fait descendre la roulette, parce que mon code était déjà dans le presse-papiers

    A+

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Points : 1 745
    Points
    1 745
    Par défaut
    Pour info, je ne vois pas d'erreur dans le code que je vous ai fourni.

    si vous pensez que ce problème n'en est plus un , pensez au tag

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

Discussions similaires

  1. Transformer le format d'une date
    Par yoaugoulo dans le forum Développement de jobs
    Réponses: 17
    Dernier message: 02/12/2009, 16h04
  2. Date au dernier jour du mois dernier
    Par guirobe dans le forum SQL
    Réponses: 3
    Dernier message: 31/10/2008, 13h36
  3. [MySQL] Transformation du format de la date de la base de données
    Par npirard dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/10/2007, 19h09
  4. [Dates] transformation du format de la date
    Par maraly dans le forum Langage
    Réponses: 5
    Dernier message: 07/03/2007, 17h20
  5. [Dates] Premier et dernier jour du mois
    Par Jarodd dans le forum Langage
    Réponses: 6
    Dernier message: 04/08/2006, 10h52

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