MySQL Хранимые процедуры - добавление целочисленной переменной к дате возвращает null - PullRequest
0 голосов
/ 05 мая 2020

Пишу свою первую mysql процедуру. У меня есть переменная date и 2 целочисленные переменные. Я умножаю две целочисленные переменные и добавляю полученное целое число к переменной date.

Например:

pint=6;
noftimes=3
sdate=2020-05-05
totDays=pint*noftimes
edate=2020-05-05+totDays

Я могу умножать pint*noftimes, но не складывать sdate+totDays. Тогда как если я добавлю sdate+10, я получаю правильное значение инкрементной даты. Вот моя процедура:

DELIMITER $$
CREATE DEFINER=`pattu`@`localhost` PROCEDURE `getFieldWorkDates`(IN `p_id` INT, OUT `totDays` INT, OUT `edate` DATE)
BEGIN
DECLARE noftimes int;
DECLARE pint int;
DECLARE sdate DATE;
DECLARE tdays int;
SELECT startDate into sdate from projects where idprojects=p_id;
SELECT projectDuration into noftimes from projects where idprojects=p_id;
SELECT recFreq into pint from projects where idprojects=p_id;
SET totDays=pint*noftimes;
SET edate = sdate+(pint*noftimes);

END$$
DELIMITER ;

Когда я выполняю это, я получаю сообщение о том, что ваш запрос был успешно выполнен. Затронуто 0 строк

1 Ответ

1 голос
/ 05 мая 2020

SET edate = sdate+(pint*noftimes);

Вы не можете добавить целое число к дате. Используйте функцию DATE_ADD ().


CREATE 
DEFINER=pattu@localhost
PROCEDURE getFieldWorkDates ( IN p_id INT, 
                              OUT totDays INT, 
                              OUT edate DATE)
SELECT recFreq * projectDuration, 
       startDate + INTERVAL recFreq * projectDuration DAY 
INTO totDays, 
     edate 
FROM projects 
WHERE idprojects=p_id;
...