0

我有一个mysql查询

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;

但问题是在星期二它会在星期六和星期三出现 它会在星期日和星期四或星期五出现 人们将有 2 天的工作时间?

我如何检查周末是否在截止日期内增加 2 天?

问候

4

2 回答 2

0

DAYOFWEEK函数将返回 1 代表星期日,2 代表星期一,3 代表星期二,... 到 7 代表星期六。您可以在这样的条件下使用它:

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'

上面的示例为周二(到下周一)增加了 6 天,为周三(到下周一)增加了 5 天,为所有其他人增加了 4 天。这与您要求的不同(周三到下周二而不是周一),但它可能更合适。您可以根据需要进行调整。

于 2013-06-18T13:24:59.663 回答
0

试试这个表达式:

(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'

它只是测试一周中的某一天,然后添加适当的持续时间以度过周末。

于 2013-06-18T13:22:42.610 回答