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 :

Clé primaire et date


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 80
    Points : 54
    Points
    54
    Par défaut Clé primaire et date
    Bonjour,
    la paie se calcule une fois par mois
    j'ai une table indeminités qui est composée de
    id_fonctionnaire|Mois_paie_calculée|indeminités
    id_fonctionnaire et mois_paie_calculée sont les clés primaires
    quand je calcule la paie chaque mois j'insert dans la colonne mois_paie_calculée
    de type date la valeurs getdate() ce qui me donne par example le resultat suivant

    001|2014-01-13|20000,00|21000,00

    SI je recalcule la paie par exemple le 2014-01-14 la paie se calcule normalement et ça c'est faux
    pour un fonctionnaire il a un seul enregistrement par mois dans la table indemnités
    ce que je veux :comment stoker seulement la partie mois et année la colonne
    Mois_paie_calculée

    résultat souhaité :

    001|2014-01|20000,00|21000,00
    merci d'avance

  2. #2
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Si le type de la colonne est datetime, inscrit simplement le premier jour du mois et intègre ça dans tes requêtes de calcul.
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 33
    Points : 38
    Points
    38
    Par défaut
    le problème c'est que le formatage des dates avec sql server inclus une date "normal" avec année, mois et jour (dans tous les formats possible...).

    Si tu veux obtenir le format que tu annonce tu devrais passer par un varchar ou char => problème car plus tu vas faire de requête et de calcul sur ce champ tu vas perdre en performance. Moi j'opterais pour ces deux choix :

    - un champ(colonne) année + un champ moi en format int et tinyint
    - soit un seul champ int formaté yyyymm ce qui est relativement rapide à l'exécution.

    Après peut-être que je n'ai pas compris...

  4. #4
    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 messi1987 Voir le message
    j'insert dans la colonne mois_paie_calculée
    de type date la valeurs getdate()
    En faisant ainsi, si pour une raison ou pour une autre, le traitement est retardé et lancé le mois suivants, tout sera faux... Il serait judicieux de prévoir un paramètre, que vous pourriez effectivement placer à GETDATE() par défaut...

    ceci mis à part, la solution de rudib est effectivement la bonne, stockez simplement le premier jour du mois, que vous pouvez récupérer ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT DATEADD(
    	MONTH
    	,DATEDIFF(
    		MONTH
    		,0
    		,GETDATE()
    		)
    	,0
    	)

Discussions similaires

  1. [AC-2007] Cle primaire composer numauto et date
    Par safa-ini dans le forum Modélisation
    Réponses: 1
    Dernier message: 29/04/2014, 06h49
  2. Réponses: 3
    Dernier message: 06/12/2010, 15h59
  3. [MySQL] comment rendre un champs de type "date" autoincement alors qu'il est déjà primaire
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/09/2010, 08h48
  4. Clé primaire de type GUID et type date
    Par Lucas Panny dans le forum SQL
    Réponses: 52
    Dernier message: 10/06/2008, 13h29
  5. Réponses: 3
    Dernier message: 19/04/2002, 00h11

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