Flux rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[SQL] intervalle de date

Spiloack, le mardi 18 octobre 2005 à 16:34:59
Bonjour à tous, j'aimerai récupérer un intervalle de date via une requête SQL sur une base oracle. Mais j'aimerais trouver un intervalle compté en jour "ouvrés", c'est à dire sans compter les week-end et les jours feriés.

Merci d'avance...

Spiloack.
Configuration: Base oracle
Répondre à Spiloack  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Spiloack, le vendredi 21 octobre 2005 à 17:38:24
Re ! Quoi ? Il n'y a pas de spécialiste SQL ?!? Je ne peux pas le croire... ;o) J'espère encore quelques temps... :op

Spiloack.
Répondre à Spiloack

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
crabs, le vendredi 21 octobre 2005 à 18:25:31
Salut,
J'ai eu le même problème, mais il fallait que je détermine le nombre d'heure
ouvrée (gestion de la disponibilité d'un système d'information). Gros soucis,
car en France, au US ou en belgique, les jours fériés ne sont pas les mêmes...

Impossible de la faire par le biais d'une simple requète. Il faut passer par de
la programmation avec une table qui va contenir le nombre de jour que
compte un jour : un jour ouvert compte pour 1 jour, un samedi ou un
dimanche ou un jour férié compte pour 0.

Ensuite soit par le biais de ton programme, soit par le biais d'une procédure,
ta fonction fait la somme des jours par le biais de cette table en faisant une
restriction sur la date (champ clé de ta table) soit un truc du genre :
SELECT SUM(jour) FROM jour_a_compter
   WHERE date >= '[debut]' AND date <= '[fin]'

Maintenant si tu regardes bien, ta table aura 365 enregistrements par an, ce
qui n'est pas énorme, moins de 37000 lignes pour un siécle directement
indexé sur seul le critère de recherche...

L'avantage d'une table de ce type c'est qu'on n'a pas de truc complexe à gérer
du type 'et si le jour férié tombe un dimanche...'.

Comme t'as l'air d'être sous oracle, tu devrais pouvoir coder ça dans une
procédure et mettre le résultat du calcul dans tes tables. Ensuite t'as plus
qu'a 'trigger' quand il y a modification la date de début ou de la date de fin
pour refaire le calcul.
[je présume peut-être des capacités d'ORACLE, mais je n'ai eu l'occasion que
de le cotoyer lors de présentations technico-commerciales]

A+, crabs ..., I think Slackware sounds better than 'Microsoft,'
-- Patrick Volkerding - founder and maintainer of Slackware
Répondre à crabs

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Spiloack, le mardi 25 octobre 2005 à 11:49:59
Ok, j'ai compris ce qu'il me reste à faire... ;o) Merci pour ta réponse !

Spiloack.
Répondre à Spiloack

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Jacques, le mardi 25 octobre 2005 à 14:45:52
Bonjour,
Peut-être que ce code VB est adaptable à votre problématique ?
A vous de voir


'comment compter un nbre de jours entre 2 dates saisies ds 2 cellules en
'otant les samedi,dimanche et jours feries

Function NbOuvrés&(D1, D2)
Dim Prem As Date, Der As Date, i As Date
If D1 = D2 Then
Prem = D1
If TYPEJOUR(Prem) = 0 Then NbOuvrés = 1
Exit Function
End If
Select Case D1 < D2
Case True: Prem = D1: Der = D2
Case False: Prem = D2: Der = D1
End Select
For i = Prem To Der
NbOuvrés = NbOuvrés + (TYPEJOUR(i) = 0) * -1
Next i
End Function


'Cette fonction renvoie 0 si le jour passé en paramètre est un jour de semaine,
'1 s'il s'agit d'un samedi ou d'un dimanche et 2 s'il s'agit d'un jour férié.
'Valide jusqu'en 2099 et pour les jours fériés français
Function TYPEJOUR(D As Date)
'L. Longre
Dim A As Integer, T As Integer
Dim LP As Date, LD As Long
Dim Toto As Long

A = Year(D)
If A > 2099 Then
TYPEJOUR = CVErr(xlErrValue)
Exit Function
End If
LD = Int(D)
If LD <= 2 Then
If LD = 1 Then TYPEJOUR = 2
Exit Function
End If
T = (((255 - 11 * (A Mod 19)) - 21) Mod 30) + 21
LP = DateSerial(A, 3, 2) + T + (T > 48) _
+ 6 - ((A + A \ 4 + T + (T > 48) + 1) Mod 7)
Select Case D
' Jours fériés mobiles
Case Is = LP, Is = LP + 38, Is = LP + 49
TYPEJOUR = 2
' Jours fériés fixes
Case Is = DateSerial(A, 1, 1), Is = DateSerial(A, 5, 1), _
Is = DateSerial(A, 5, 8), Is = DateSerial(A, 7, 14), _
Is = DateSerial(A, 8, 15), Is = DateSerial(A, 11, 1), _
Is = DateSerial(A, 11, 11), Is = DateSerial(A, 12, 25)
TYPEJOUR = 2
Case Else
' Samedi ou dimanche
If Weekday(D, vbMonday) >= 6 Then TYPEJOUR = 1
End Select

End Function


Bien cordialement

La science ne fait que trouver ce qui existe depuis toujours.
Hubert REEVES.
Répondre à Jacques

Résultats pour [SQL] intervalle de date

[Shell] passer un script entre deux dates (Résolu) Voila je voudrais faire un script sh mais je n'y arrive pas, pouvez-vous m'aider ? Voici le problème : je veux avec mon script lui passé une date de début et une date de fin. Lui va prendre chaque jour de cette intervalle (date de debut et... www.commentcamarche.net/forum/affich-2629558-shell-passer-un-script-entre-deux-dates
[PHP]Ajouter du temps à un datetime (Résolu) Bonjour à tous, voilà, j'aimerai faire une comparaison en PHP pour dire : If ( date_adhesion_adherent + 1 an ) < Date d'aujourd'hui { traitement } J'ai une base de données SQL, et date_adhesion_adherent est un datetime. Ma question... www.commentcamarche.net/forum/affich-7051306-php-ajouter-du-temps-a-un-datetime
[PHP]Ajouter du temps à un datetime (Résolu) Bonjour à tous, voilà, j'aimerai faire une comparaison en PHP pour dire : If ( date_adhesion_adherent + 1 an ) < Date d'aujourd'hui { traitement } J'ai une base de données SQL, et date_adhesion_adherent est un datetime. Ma question... www.commentcamarche.net/forum/affich-7051099-php-ajouter-du-temps-a-un-datetime

Résultats pour [SQL] intervalle de date

Ecrire une date au format françaisParmi une foule de méthodes nous pouvons retenir celle qui utilise les paramètres de localisation du serveur (à priori "fr-FR"). La technique a l'avantage de fournir la traduction du nom des jours et des mois sans avoir à les coder. Cette fonction... www.commentcamarche.net/faq/sujet-9884-ecrire-une-date-au-format-francais

Résultats pour [SQL] intervalle de date

Oracle 10g (Résolu)bonjour svp aidez moi !! je prépare mon projet de fin d'etude ,et je doit créer une base de donnée sous oracle ,j'ai instaler oracle 10g express edition mais quand j'ecris la commande sous sqlplus :"create database nom de la base;"une... www.commentcamarche.net/forum/affich-2913794-oracle-10g
Probleme php (Résolu)Bonjour, tout d'abord voici mon script : $db=mysql_connect("localhost", "ADMIN", "admin"); mysql_select_db("flux_rss",$db); $recherche=$_POST["recherche"]; $rubrique=$_POST["rubrique"]; $sql = "SELECT dateArticle, titreArticle FROM infosexpert... www.commentcamarche.net/forum/affich-6730403-probleme-php
Sql rechercher date commençant par (Résolu)Bonjour, Sous ma BD Oracle 10g, je cherche à récupérer toutes les dates de naissance qui commencent par le jour 01. Je tourne en rond avec la fonction like qui ne donne pas ce que je veux. Quelqu'un peut m'aider? Merci. www.commentcamarche.net/forum/affich-6537390-sql-rechercher-date-commencant-par

Résultats pour [SQL] intervalle de date

Télécharger Database EditorLa gestion de la base des données est une tâche complexe, généralement réservé aux utilisateurs expérimentés. Pour une tâche aussi spécifique, il faut des outils spécifiques. Database editor est un outil permettant un accès rapide et facile à toutes... www.commentcamarche.net/telecharger/telecharger-34056354-database-editor

Résultats pour [SQL] intervalle de date

SQL - Création de tableLe SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE... www.commentcamarche.net/contents/sql/sqlcreate.php3
SQL - TriTri des résultats Il est possible en SQL d'organiser les résultats grâce à la clause ORDER BY. La clause ORDER BY est suivie des mots clés ASC ou DESC, qui précisent respectivement si le tri se fait de manière croissante (par défaut) ou... www.commentcamarche.net/contents/sql/sqltri.php3
Introduction à JDBCIntroduction à JDBC La technologie JDBC (Java DataBase Connectivity) est une API fournie avec Java (depuis sa version 1.1) permettant de se connecter à des bases de données, c'est-à-dire que JDBC constitue un ensemble de classes permettant de... www.commentcamarche.net/contents/jdbc/jdbcintro.php3