Расчет продолжительности времени является обычной задачей в SQL Server и может быть полезен в различных бизнес-сценариях. В этом руководстве мы рассмотрим, как рассчитать продолжительность в днях, часах, минутах и секундах с использованием SQL Server.
Сценарий 1: Продолжительность доставки заказа
Предположим, у нас есть даты заказа и даты доставки заказа клиенту, и мы хотим рассчитать продолжительность доставки. Мы начнем с продолжительности в секундах, а затем преобразуем ее в дни, часы, минуты и секунды.
Для расчета разницы между датой заказа и датой доставки мы можем использовать функцию DATEDIFF в SQL Server. Вот пример:
SELECT DATEDIFF(SECOND, OrderDate, ShipDate) AS DurationInSeconds
FROM Orders;После получения продолжительности в секундах мы можем дальше рассчитать продолжительность в днях, часах, минутах и секундах с помощью простых арифметических операций. Вот пример:
SELECT
DurationInSeconds / (24 * 60 * 60) AS DurationInDays,
(DurationInSeconds / (60 * 60)) % 24 AS DurationInHours,
(DurationInSeconds / 60) % 60 AS DurationInMinutes,
DurationInSeconds % 60 AS DurationInSeconds
FROM (
SELECT DATEDIFF(SECOND, OrderDate, ShipDate) AS DurationInSeconds
FROM Orders
) AS Duration;Это даст нам продолжительность в днях, часах, минутах и секундах для каждого заказа.
Сценарий 2: Продолжительность работы сотрудников
В другом сценарии, предположим, у нас есть набор данных, который включает общее количество минут, которое сотрудники работали в больничном отделении. Мы хотим рассчитать продолжительность в днях, часах и минутах на основе продолжительности работы сотрудников в день.
Аналогично предыдущему сценарию, мы можем начать с расчета общей продолжительности в минутах с помощью функции SUM. Вот пример:
SELECT SUM(StaffWorkingDuration) AS TotalMinutesDuration
FROM StaffWorkingHours;После получения общей продолжительности в минутах мы можем рассчитать продолжительность в днях, часах и минутах с помощью арифметических операций. Вот пример:
SELECT
TotalMinutesDuration / (24 * 60) AS DurationInDays,
(TotalMinutesDuration / 60) % 24 AS DurationInHours,
TotalMinutesDuration % 60 AS DurationInMinutes
FROM (
SELECT SUM(StaffWorkingDuration) AS TotalMinutesDuration
FROM StaffWorkingHours
) AS Duration;Это даст нам продолжительность в днях, часах и минутах на основе продолжительности работы сотрудников в день.
Заключение
Расчет продолжительности времени в SQL Server можно выполнить с помощью простых арифметических операций и встроенных функций, таких как DATEDIFF и SUM. Понимая бизнес-требования и доступные данные, вы легко можете рассчитать продолжительность в днях, часах, минутах и секундах для различных сценариев.
Не забудьте настроить имена столбцов и таблиц в примерах в соответствии со схемой вашей собственной базы данных.
Спасибо за прочтение этого руководства. Если у вас есть вопросы или отзывы, пожалуйста, оставьте комментарий ниже.
Статья последний раз обновлена: 2021-12-01