Ho una procedura memorizzata che inserisce due record in una tabella, la differenza tra i record è che la colonna temporale del secondo record è @MinToAdd
successiva al primo:
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
Qual è il modo corretto di aggiungere @MinutesToAdd
minuti a @StartTime
e @EndTime
?
Nota che sto usando il time
tipo di dati.
Aggiornamento :
una risposta corretta dovrebbe contenere le seguenti informazioni:
- Come aggiungere minuti a un
time
tipo di dati. - Che la soluzione proposta non si traduca in una perdita di precisione.
- Problemi o preoccupazioni di cui tenere conto nel caso in cui i minuti fossero troppo grandi per adattarsi a una
time
variabile, o rischio di ribaltamento dellatime
variabile. Se non ci sono problemi, si prega di dichiararlo.