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

次の表現を試してください。

(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 に答える
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 に答える