Я пытаюсь создать функцию, которая возвращает продолжительность полета.
Он хорошо работает с простым запросом, но когда я пытаюсь использовать функцию, он возвращает 0 ...
Возвращает 1: 00
declare @FlightId int,
@Departure datetime,
@Arrival datetime,
@duration varchar
set @FlightId = (select FlightId from Flight where FlightNumber = 'ZZZ')
set @Departure = (select min(Departure) from Step where FlightId = @FlightId )
set @Arrival = (select max(Arrival) from Step where FlightId = @FlightId )
select CONVERT(varchar(5), DATEADD(minute, DATEDIFF(minute, @Departure, @Arrival), 0), 114)
и это функция, которая возвращает 0
alter function FlightDuration
(@FlightNumber varchar(50))
returns varchar
as
begin
declare @FlightId int,
@Departure datetime,
@Arrival datetime,
@duration varchar
set @FlightId = (select FlightId from Flight where FlightNumber = @FlightNumber)
set @Departure = (select min(Departure) from Step where FlightId = @FlightId )
set @Arrival = (select max(Arrival) from Step where FlightId = @FlightId )
set @duration = CONVERT(varchar(12), DATEADD(minute, DATEDIFF(minute, @Departure, @Arrival), 0), 114)
return @duration
end
Я называю это так:
SELECT dbo.FlightDuration ('ZZZ')