Используйте DATEDIFF
, чтобы определить разницу между датами / временем. Ваша формула может выглядеть примерно так:
DATEDIFF(minute, ParkingStartTime, ParkingEndTime) / 60 * 5
Конечно, вы можете использовать только
DATEDIFF(hour, ParkingStartTime, ParkingEndTime) * 5
, что проще, но в некоторых случаях может привести к нежелательным результатам. Например, если время начала было 8:55
, а время окончания 9:05
, DATEDIFF(hour, ...)
вернуло бы 1
, хотя фактическая разница намного меньше, всего 10 минут. Это потому, что DATEDIFF по сути усекает время до указанных единиц, а затем вычисляет разницу.
Так что похожая ситуация может быть с минутами, но, по крайней мере, с минутами у вас будет лучшая детализация. Например, вы получите ответ 60
при расчете DATEDIFF(minute, '5:20:57', '6:20:04')
, хотя на самом деле он немного больше 59 минут, но неточность не так велика, как в DATEDIFF(hour, ...)
.
Если вы хотите добиться еще большей детализации, рассчитайте разницу в секундах и разделите на 3600, чтобы получить целые часы:
DATEDIFF(second, ParkingStartTime, ParkingEndTime) / 3600 * 5
UPDATE
В SQL Server, когда целое число делится на целое, результат также будет целым числом.
Если вам нужен более точный результат, вы можете убедиться в этом следующим образом (используя последнее выражение выше):
DATEDIFF(second, ParkingStartTime, ParkingEndTime) / 3600.0 * 5