Mam procedurę składowaną, która wstawia dwa rekordy do tabeli, różnica między nimi polega na tym, że kolumna czasowa drugiego rekordu znajduje się @MinToAdd
po pierwszym:
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
Jaki jest prawidłowy sposób dodawania @MinutesToAdd
minut do @StartTime
i @EndTime
?
Uwaga: używam time
typu danych.
Aktualizacja :
Prawidłowa odpowiedź powinna zawierać następujące informacje:
- Jak dodać minuty do
time
typu danych. - Że proponowane rozwiązanie nie powoduje utraty precyzji.
- Problemy lub obawy, o których należy pamiętać w przypadku, gdy minuty byłyby zbyt duże, aby zmieściły się w
time
zmiennej, lub ryzyko przewróceniatime
zmiennej. Jeśli nie ma żadnych problemów, proszę to zaznaczyć.