|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre actif
![]() Consultant en Business Intelligence Inscription : juin 2007 Messages : 207 ![]() |
Bonjour,
Je fait appel a vous car j'ai une interrogation sur un datediff un peu spécial dans une REQUETE SQL En effet je souhaite faire une différence entre 2 date pour récupéré le nombre de jours moins les jours fériés Par exemple si je prend le Vendredi 21 et le lundi 24 je souhaite que l'on me retourne 1 et non pas 3 de même si je prend le Vendredi 21 et le lundi 31 je souhaite que l'on me retourne 6 et non pas 10 cela doit aussi marché avec les journée comme le 14 juillet ou le 15 aout. Si vous avez des solutions sur un algo qui fonctionnerait je suis preneur je continue a chercher de mon coté pour le moment. merci à la communauté .
__________________
Morvan La connaissance c'est ce qu'il manque à tout homme |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() dba Inscription : juillet 2007 Messages : 2 523 ![]() |
Type de problème régulièrement posé ici, notamment hier...
Créez une table de date avec un booléen pour férié ou pas et par requête, tu pourras avoir la somme des jours fériés ou pas.
__________________
les règles du forum - mode d'emploi du forum Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur) JE NE RÉPONDS PAS aux questions techniques par message privé. Écrire en français sur un forum est une marque minimale de respect. |
|
|
01
|
|
|
#3 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Inspirez vous de l'article que j'ai écrit à cet effet : http://sqlpro.developpez.com/cours/gestiontemps/
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
10
|
|
|
#4 | |
|
Expert Confirmé
![]() dba Inscription : juillet 2007 Messages : 2 523 ![]() |
Citation:
__________________
les règles du forum - mode d'emploi du forum Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur) JE NE RÉPONDS PAS aux questions techniques par message privé. Écrire en français sur un forum est une marque minimale de respect. |
|
|
|
00
|
|
|
#5 | |
|
Membre actif
![]() Consultant en Business Intelligence Inscription : juin 2007 Messages : 207 ![]() |
Citation:
Bref mon problème n'est pas de savoir quand un jour est férié car j'ai déjà une table calendrier construite sur le modèle d'SQlPro qui me ramène par jour le mois, la semaine, l'année, et si le jour est férié oui ou non depuis un bon moment Mon problème était surtout de savoir comment l'implémenter dans ma requête, j'ai sans doute du mal m'exprimer. En y réfléchissant de plus près le mieux est d'avoir une fonction Sql auquel je fait appel et qui va me ramener un entier X étant mon nombre de jour férié dans mon intervalle de temps Merci néanmoins pour les conseils avisés.
__________________
Morvan La connaissance c'est ce qu'il manque à tout homme |
|
|
|
00
|
|
|
#6 | ||||
|
Membre actif
![]() Consultant en Business Intelligence Inscription : juin 2007 Messages : 207 ![]() |
Au final la solution :
Code identification des jours fériés :
Code Calcul du nombre de jour férié entre deux dates :
POur la somme du nb de jour férié j'utilise une fonction F_Iso_weekday qui n'est pas présenté ici car facile a trouver sur le net. Cette fonction a le mérite de calculé a la volé mon nb de jour férié et évite ainsi toute modification dans la table Calendrier.
__________________
Morvan La connaissance c'est ce qu'il manque à tout homme |
||||
|
|
01
|
|
|
#7 | ||
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Je voit pas l'intérêt d'une UDF à moins de vouloir pourrir sciemment les perf.
Si vous avez une colonne FERIE de type BIT dans votre table de date, il suffit de faire : Code :
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
||
|
10
|
|
|
#8 |
|
Membre actif
![]() Consultant en Business Intelligence Inscription : juin 2007 Messages : 207 ![]() |
il y a deux raisons à ce choix :
1-Tout simplement car je suis sur une table qui contient moins de 100 000 enregistrements et que les perfs ne sont clairement pas un problème pour moi et ne sont pas pres de le devenir 2- car cela est clairement plus simple a gérer puisque cela m'évite de rajouter des jointures. La finalité n'étant pas de récupérer le nombre de jours férié mais de calculer une durée en minutes entre deux date suivant d'autres paramètres. D'autant que ma table calendrier est dans une autre bases de donnée et que je ne souhaite pas la dupliqué dans cette base. peut être qu'effectivement sa pourrie les perfs mais ce n'est pas ce que dit le rendu de mon état qui est instantané le nombre de donnée traité avec les différents filtres dépassant rarement le millier.
__________________
Morvan La connaissance c'est ce qu'il manque à tout homme |
|
|
01
|
|
|
#9 | ||||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 669 ![]() |
Citation:
Pourquoi faire performant quand on peut faire contre-performant ? Décidément la quantité de travail des consultants (qui au final passent 50% de leur temps à faire le travail des autres correctement) n'est pas près de disparaître avec de tels raisonnements. Citation:
Citation:
Citation:
Quand vous la dépasserez, ce sera une autre histoire. Enfin, comme disent Laspalès et Chevalier : "c'est vous qui voyez; y'en a qu'ont essayé, ils ont eu des problèmes" @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||||
|
00
|
|
|
#10 | |
|
Membre actif
![]() Consultant en Business Intelligence Inscription : juin 2007 Messages : 207 ![]() |
Citation:
Mais bon je me doutais qu'en me justifiant j'aurais ce genre de remarque douteuse. Quand on vous demande un travail pour hier on a pas forcément le temps de faire le projet comme on l'aurait souhaité mais bon c'est sans doute pas un problème de consultant...
__________________
Morvan La connaissance c'est ce qu'il manque à tout homme |
|
|
|
00
|
|
|
#11 |
![]() ![]() Alexandre ChemlaConsultant en Business Intelligence Inscription : février 2006 Messages : 1 773 ![]() |
C'est justement le rôle du consultant, qui n'est pas développeur, d'expliquer à son client qu'il lui faut 15min de plus pour réaliser les jointures supplémentaires plutôt que d'utiliser une UDF.
Le consultant est consulté pour ses conseils et son expertise. A moins de n’être que le titre donné par ces SSII type "boite à viande" lorsqu'ils présentent leur profil.
__________________
Alexandre Chemla - Consultant MS BI chez Masao |
|
|
00
|
|
|
#12 | |||
|
Membre Expert
![]() |
Citation:
Vous avez des cours sur les jointures sur le site d'SQLPRO ![]() Citation:
Citation:
Bien cordialement
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|||
|
|
10
|
Copyright © 2000-2012 - www.developpez.com