Tengo un procedimiento almacenado que inserta dos registros en una tabla, la diferencia entre los registros es que la columna de tiempo del segundo registro es @MinToAdd
posterior a la primera:
CREATE PROCEDURE CreateEntry
/*Other columns*/
@StartTime time(2),
@EndTime time(2),
@MinutesToAdd smallint
AS
BEGIN
SET NOCOUNT ON;
SET @MinutesToAdd = @MinutesToAdd % 1440; --Prevent overflow if needed?
IF (@MinutesToAdd > 0)
BEGIN
INSERT INTO ClientNotification (/*Other columns*/ startTime, endTime)
OUTPUT inserted.id
VALUES
(/*Other columns*/ @StartTime, @EndTime),
(/*Other columns*/ @StartTime + @MinutesToAdd, @EndTime + @MinutesToAdd);
END
ELSE
BEGIN
/*Whatever ELSE does.*/
END
END
¿Cuál es la forma correcta de agregar @MinutesToAdd
minutos a @StartTime
y @EndTime
?
Tenga en cuenta que estoy usando el time
tipo de datos.
Actualización :
una respuesta correcta debe contener la siguiente información:
- Cómo agregar minutos a un
time
tipo de datos. - Que la solución propuesta no resulta en una pérdida de precisión.
- Problemas o inquietudes a tener en cuenta en el caso de que los minutos sean demasiado largos para caber en una
time
variable, o riesgo de volcar latime
variable. Si no hay problemas, indíquelo.