创建如下函数
CREATE FUNCTION [dbo].[ReturnTime] (
@InputString VARCHAR(8000)
)
RETURNS @Items1 TABLE (
Item time
)
AS
BEGIN
DECLARE @Items TABLE(Item VARCHAR(8000))
declare @Delimiter VARCHAR(50)=','
IF @Delimiter = ' '
BEGIN
SET @Delimiter = ','
SET @InputString = REPLACE(@InputString, ' ', @Delimiter)
END
IF (@Delimiter IS NULL OR @Delimiter = '')
SET @Delimiter = ','
DECLARE @Item time
DECLARE @ItemList VARCHAR(8000)
DECLARE @DelimIndex INT
SET @ItemList = @InputString
SET @DelimIndex = CHARINDEX(@Delimiter, @ItemList, 0)
WHILE (@DelimIndex != 0)
BEGIN
SET @Item = SUBSTRING(@ItemList, 0, @DelimIndex)
INSERT INTO @Items VALUES (@Item)
-- Set @ItemList = @ItemList minus one less item
SET @ItemList = SUBSTRING(@ItemList, @DelimIndex+1, LEN(@ItemList)-@DelimIndex)
SET @DelimIndex = CHARINDEX(@Delimiter, @ItemList, 0)
END -- End WHILE
IF @Item IS NOT NULL -- At least one delimiter was encountered in @InputString
BEGIN
SET @Item = @ItemList
INSERT INTO @Items VALUES (@Item)
END
-- No delimiters were encountered in @InputString, so just return @InputString
ELSE INSERT INTO @Items VALUES (@InputString)
INSERT INTO @Items1
SELECT Cast (DateAdd (S, Sum (DATEDIFF (S, '00:00:00', item)), '00:00:00') as Time) FROM @Items
RETURN
END -- End Function
查询
select SUBSTRING(convert(varchar, item,108),1,5) from dbo.ReturnTime('01:00') --//return 01:00
select SUBSTRING(convert(varchar, item,108),1,5) from dbo.ReturnTime('01:00,02:00')-- //return 03:00
select SUBSTRING(convert(varchar, item,108),1,5) from dbo.ReturnTime('01:00,02:00,03:00') --//return 06:00