私は停止しました.mysql内で時間を数える関数を作成しましたが、間違った数字が表示され続けます.何時間もそれを見てきましたが、何が間違っているのかわかりません.
FUNCTION `WorkingHours`(`stardate` TIMESTAMP, `enddate` TIMESTAMP) RETURNS int(11)
BEGIN
DECLARE result DECIMAL(20,10) DEFAULT 0;
DECLARE TotWeeks DECIMAL(20,10);
DECLARE FullWeeks INT;
DECLARE RestDays DECIMAL(20,10);
DECLARE StartDay INT DEFAULT WEEKDAY(stardate) + 1;
SET TotWeeks = (TIMESTAMPDIFF(HOUR,stardate,enddate))/(24*7);
SET FullWeeks = FLOOR(TotWeeks);
SET RestDays = ROUND((TotWeeks-FullWeeks) * 7);
IF(RestDays + StartDay) > 5 THEN SET result = ROUND((TotWeeks*7*24) - (FullWeeks*2*24 + (((RestDays + StartDay) - 5) * 24)));
ELSE SET result = ROUND((TotWeeks*7*24) - (FullWeeks*2*24));
END IF;
RETURN result;
END
誰かが提案や別のアプローチを持っていれば、喜んでこれを置き換えます。
Startdate:2017-07-05 12:17:18
Enddate:2017-07-07 18:30:42
私に与える - 5
編集: これらの日付は-45を与えます
Startdate:2017-07-09 13:55:41
Enddate:2017-07-10 17:31:56
この機能はほとんどの場合機能しますが、数回は機能しませんが、その理由がわかりません