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

Langage SQL Discussion :

Manipulations sur une date


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 113
    Par défaut Manipulations sur une date
    Bonjour je suis en train de travailler sur une application de paie et je voudrais recouper le mois à partir d'une date mais le problème c'est que lorsque le mois est impair il ne m'affiche pas le 0 avant le numéro du mois il m'affiche juste 2 au lieu de 02 voilà ma chaine de conx merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TxtSQLGlobal = "SELECT YEAR(P.datedebut) as Annee,(case when len(Month(P.datedebut))=0 then '0'+ Month(P.datedebut) else Month(P.datedebut) end) as Mois,P.datedebut,P.IdPeriode,  " _
                   & " sum(Round((case when (S.CumulAssiette) is null then 0 else S.CumulAssiette end),2)) as CumulAssiette," _
                   & " sum(Round((case when (S.CumulBaseCalcule) is null then 0 else S.CumulBaseCalcule end),2)) as CumulBaseCalcule" _
                   & " FROM AgentsCaisses as AC INNER JOIN ((Agents as A INNER JOIN (SituationProgressifAgentCaisses as S Inner join PeriodesPaie as P on P.IdPeriode=S.IdPeriodeReference)ON A.IdAgent = S.IdAgent) LEFT JOIN Villes ON A.IdVille = Villes.IdVille) ON (AC.IdCaisse = S.IdCaisse) AND (AC.IdAgent = S.IdAgent)" _
                   & " Where (((CiopAvecCaisse = 1 Or ContratCiop = 0) And ((S.IdCaisse) = 'CNSS') And ((S.IdPeriodeReference) = '" & TablePeriodeDefaut.Fields("IdPeriode") & "')))" _
                   & " Group BY P.datedebut,P.IdPeriode"

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 138
    Par défaut
    Quel SGBD utilises-tu ?

    Tu devrais remplacer len(Month(P.datedebut))=0 par len(Month(P.datedebut)) < 2 pour obtenir le résultat que tu attends.
    Toutefois, il existe certainement des fonctions de formatage des nombres en chaine de caractère propres à ton SGBD.

    Pour optimiser ta requête, tu peux remplacer CASE WHEN colonne IS NULL THEN 0 ELSE colonne END par COALESCE(colonne, 0).
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 113
    Par défaut
    J'utilise SQL server 2005. Mon problème, ce n'est pas au niveau de la longueur non mais au niveau de la composition du numéro de mois : je veux afficher le zéro avant les numéros des mois impairs. C'est pour cela que j'ai fait ce contrôle sur le nombre de caractères du mois ; si la longueur est inférieure à 2, je vais ajouter le zéro.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 138
    Par défaut
    Qu'appelles-tu un numéro impair ?
    Pour la plupart des gens, un nombre est dit impair s'il n'est pas un multiple de deux. Ça ne semble pas être la manière dont tu le conçois...
    lorsque le mois est impair il ne m'affiche pas le 0 avant le numéro du mois il m'affiche juste 2 au lieu de 02
    Ta requête ne fais pas ce que tu décris :
    si la longueur est inférieure à 2, je vais ajouter le zéro.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    case when len(Month(P.datedebut))=0 then '0'+ Month(P.datedebut) else Month(P.datedebut) end
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Le test de la longueur n'est pas nécessaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select right(cast(100 + month(getdate()) as char(3)), 2)    as c1
         , right('0' + cast(month(getdate()) as varchar(2)), 2) as c2;
     
    c1   c2
    ---- ----
    07   07

  6. #6
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 113
    Par défaut
    Ce que je veux dire avec le nombre impair, c'est le nombre des chiffres qui composent le numéro du mois. Par exemple, le mois 2 se compose d'un seul chiffre, par contre le mois 12 il se compose de deux chiffres le 1 et le 2. Moi, je veux ajouter un zéro au début de chaque mois impair de 1 à 9.
    Merci pour vos réponses mais je ne comprends pas bien la formule que vous avez écrit.
    Merci encore

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

Discussions similaires

  1. question sur manipulation d'une date
    Par decisionnel dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 12/07/2009, 23h26
  2. requette sur une date
    Par AlphonseBrown dans le forum Langage SQL
    Réponses: 13
    Dernier message: 04/04/2005, 13h41
  3. Travailler sur une date
    Par HqX dans le forum Langage SQL
    Réponses: 11
    Dernier message: 05/10/2004, 16h54
  4. Problème lors d'un Update sur une date
    Par Nany dans le forum ASP
    Réponses: 3
    Dernier message: 19/05/2004, 23h37
  5. [SQL] Conditions sur une date dans une requete
    Par poufouille dans le forum Bases de données
    Réponses: 4
    Dernier message: 17/03/2004, 15h25

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