Ihre Kommentare klingen so, als würden Sie versuchen, die Intervalle (oder die Dauer) arithmetisch zu berechnen.
SQL Server time
Datentyp "Definiert eine Zeit von einem Tag. Die Zeit ist ohne Zeitzonenbewusstsein und basiert auf einer 24-Stunden-Uhr." Sie können keine zwei time
Werte hinzufügen; 2 Uhr + 3 Uhr ist buchstäblich Unsinn. In SQL Server 2012. . .
select cast('2:00' as time) + cast('3:00' as time)
Operand data type time is invalid for add operator.
Andere dbms können eine unsinnige Zahl zurückgeben.
Standard-SQL enthält einen Datentyp interval
, der die erwartete Arithmetik und Formatierung unterstützt. So 2 Uhr + 3 Stunden würde 5:00:00 (5 Uhr) zurückkehren. Wenn der Datentyp interval
nicht unterstützt wird, speichern Sie die granularste Einheit (Sekunden für Sie) als Ganzzahl und formatieren Sie sie zur Anzeige. Ich könnte eine Sichtweise verwenden, ich selbst.
declare @val as integer;
-- 10:01:12, 10 hours, 1 minute, 12 seconds, in seconds.
set @val = (10 * 60 * 60) + (1 * 60) + 12;
-- Leading zeroes for minutes and seconds.
select @val as total_sec,
concat(@val/(60 * 60), ':', format((@val/60) % 60, 'D2'), ':', format(@val % 60, 'D2')) as total_time
total_sec total_time
--
36072 10:01:12
Warum die in 'Time' Spaltentyp nicht verwenden gebaut? – mclaassen