2013-06-18 1 views
0

j'ai une requête MySQLajoutant date_add mais en gardant les week-ends mide

SELECT CONCAT('document',LEFT(cases.id,26)) AS 'id', 
cases.date_modified, 
cases.date_modified, 
'67421f0a-3f44-1093-1ab6-51750b508349' AS 'assigned_user','1','1','0', 
'complete documentation in 4 Days' AS 'name', 
'Not Started', 
cases.date_modified, 
DATE_ADD(cases.date_modified,INTERVAL 4 DAY) AS 'due date','Cases',cases.id, 
'P1','Complete Operations Documentation' AS 'description' 
FROM cases 
    INNER JOIN cases_cstm 
ON (cases.id = cases_cstm.id_c) 
WHERE cases.`assigned_user_id` = '67421f0a-3f44-1093-1ab6-51750b508349' 
AND cases.`status` = 'Start Administration' 
AND `cases_cstm`.`file_location` = 'Operations' 
ORDER BY `date_modified` DESC 
LIMIT 1; 

mais le problème est le mardi, il viendra pour samedi et mercredi, il viendra pour dimanche et jeudi ou vendredi les gens vont avoir 2 jours les de travailler?

comment puis-je vérifier que si un week-end fals à la date d'échéance pour ajouter 2 jours?

concernant

Répondre

0

Essayez cette expression:

(case when weekday(cases.date_modified) = 0 
     then DATE_ADD(cases.date_modified, INTERVAL 4 DAY) 
     else DATE_ADD(cases.date_modified, INTERVAL 6 DAY) 
    end) as 'due date' 

Il teste juste pour le jour de la semaine et ajoute la durée appropriée pour passer le week-end.

0

La fonction DAYOFWEEK renverra 1 pour dimanche, 2 pour lundi, 3 pour mardi, ... à 7 pour samedi. Vous pouvez l'utiliser dans une condition comme ceci:

DATE_ADD(cases.date_modified, 
    CASE DAYOFWEEK(cases.date_modified) 
    WHEN 3 THEN INTERVAL 6 DAY 
    WHEN 4 THEN INTERVAL 5 DAY 
    ELSE INTERVAL 4 DAY 
    END AS 'due date' 

L'exemple ci-dessus ajoute 6 jours pour un mardi (aller le lundi suivant), 5 jours pour un mercredi (aller le lundi suivant), et 4 pour tous les autres. Ceci est différent de ce que vous avez demandé (où mercredi va au prochain mardi plutôt que lundi), mais il peut être plus approprié. Vous pouvez modifier au besoin.

Questions connexes