Compter les jours entre deux dates, à l'exclusion des week-ends (MySQL uniquement)
J'ai besoin de calculer la différence (en jours) entre deux dates dans MySQL à l'exclusion des week-ends (samedi et dimanche). C'est, à la différence de jours moins le nombre de samedi et dimanche entre les.
Pour le moment, j'ai simplement compter le nombre de jours à l'aide de:
SELECT DATEDIFF('2012-03-18', '2012-03-01')
Ce retour 17
, mais je veux exclure week-end, donc je veux 12
(parce que la 3e et la 4e, 10e, 11e et 17e sont les week-ends de jours).
Je ne sais pas par où commencer. Je sais que sur le WEEKDAY()
fonction et toutes celles qui sont liées, mais je ne sais pas comment les utiliser dans ce contexte.
Je n'ai pas de fonction permettant d'obtenir la différence dans la semaine entre les deux dates dans MySQL.
pour être juste, c'est une autre SGBDR, cependant, c'est un double possible de MySQL fonction pour trouver le nombre de jours ouvrés entre deux dates
Vous voulez exclure les vacances?
Pas de. Dans ce cas, de toute façon, tout ce que je besoin est une table de fête: je vais soustraire le nombre de lignes (à trouver dans l'intervalle donné) dans le tableau du résultat final.
DATEDIFF
ne fonctionne que sur les jours, pas aussi sur la semaine comme DATEDIFF en TSQL.pour être juste, c'est une autre SGBDR, cependant, c'est un double possible de MySQL fonction pour trouver le nombre de jours ouvrés entre deux dates
Vous voulez exclure les vacances?
Pas de. Dans ce cas, de toute façon, tout ce que je besoin est une table de fête: je vais soustraire le nombre de lignes (à trouver dans l'intervalle donné) dans le tableau du résultat final.
OriginalL'auteur lorenzo-s | 2012-03-18
Vous devez vous connecter pour publier un commentaire.
Illustration:
Pseudocode:
Est-il une erreur dans votre code? Juste après le SELECT, n'a pas à être
@full_weeks*5
au lieu de@full_weeks*2
?Oui, j'ai retourné les week-ends avec des jours de travail, désolé.
Ok. Il semble fonctionner. Je vais accepter votre réponse le plus tôt possible, je peux le tester dans mon "vrai" requête SQL (je ne suis pas au bureau aujourd'hui).
Espérons que ça marche, profitez du dimanche 🙂
OriginalL'auteur biziclop
Suffit de l'essayer à l'aide d'une fonction simple :
Test :
Résultat :
OriginalL'auteur pollux1er
OriginalL'auteur Vinod Cyriac
Mon utile pour vous
Le soufflet logique de ne montrer que le nombre de jours
comme
Table de requête basé sur
ip:
OriginalL'auteur Raja Rama Mohan Thavalam
Vous pouvez également le faire avec des questions, mais vous aurez besoin d'une des dates de la table qui couvre les plages de dates. C'est une bonne pratique pour créer une des dates les tables à utiliser dans tous vos projets, de toute façon.
De créer les dates de table, tout ce que vous faire est de générer une longue liste de dates (EXCEL est en pratique la méthode, mais il existe d'autres moyens) et les importer dans une table. Ensuite, l'utilisation de ces dates, en collaboration avec diverses fonctions de date de dériver le jour de la semaine", "mois", "année", etc, et d'enregistrer tout ce qui dans le tableau avec les dates, comme suit:
tbl_dates
dow est "le jour de la semaine" dans ma table. Alors votre requête ressemble à ceci:
Dans ce cas, 1 et 7 sont dimanche, samedi, respectivement (qui est la valeur par défaut) et, bien sûr, vous pouvez imbriquer dans une autre question si vous avez besoin de calculer ce, pour de multiples startDate(s) et date de fin(s).
OriginalL'auteur user3646932