Это простой расчет, как только вы поймете, что частота кадров - это просто количество кадров в секунду.Вам просто нужно преобразовать время в секунды и добавить значение после того, что казалось десятичной точкой, но это просто дополнительные кадры.В следующем расчете используется неявное преобразование во время, но оно ограничено 23:59:59.Если вам нужно большее значение, можно установить более сложное преобразование.Он также не учитывает неправильный формат.
CREATE TABLE #Barcodes(
Barcode int,
Time1 varchar(11),
Time2 varchar(11),
FramesForTime1 int,
FramesForTime2 int
)
INSERT INTO #Barcodes(Barcode, Time1, Time2)
VALUES( 1, '10:20:34.25', '23:59:59.25')
CREATE TABLE #FrameRates(
Barcode int,
Format varchar(11),
FrameRate int
)
INSERT INTO #FrameRates VALUES( 1, '1080p', 25);
SELECT bc.Barcode,
bc.Time1,
bc.Time2,
DATEDIFF( ss, 0, LEFT( Time1, 8)) * Fr.FrameRate + RIGHT(Time1, 2) AS FramesForTime1,
DATEDIFF( ss, 0, LEFT( Time2, 8)) * Fr.FrameRate + RIGHT(Time2, 2) AS FramesForTime2,
fr.Format,
fr.FrameRate
FROM #Barcodes bc
JOIN #FrameRates fr ON bc.Barcode = fr.Barcode
GO
DROP TABLE #Barcodes, #FrameRates
Я согласен с комментарием, который предлагает не сохранять эти значения.Однако вы можете создать вычисляемые столбцы, которые будут рассчитываться на лету при необходимости.