Во-первых, я бы нашел все уникальные события времени в вашей таблице, что-то вроде:
select distinct rtrim(substring(@timeField,charindex(' ',@timeField)+1,99))
as TimePortion
Это даст вам ощущение того, с чем вы имеете дело.
Затем в вашей функции разбейте части даты и времени ...
Теперь, основываясь на том, что вы нашли в запросе, вам нужно указать, что делать с временем, которое вы найдете. Например, если часть времени является числовой, вы можете просто добавить к ней: 00 (т.е. 4 становится 4:00). Если вы видите полдень, вы можете заменить его на 12:00 и т. Д.
ALTER FUNCTION formatit( @fromtime VARCHAR(50) )
RETURNS DATETIME
AS
BEGIN
declare @dtPortion VARCHAR(12)
declare @tmPortion VARCHAR(32)
declare @x INT
SET @x = charindex(' ',@fromTime)
SET @dtPortion = left(@fromTime,@x-1)
SET @tmPortion = rtrim(substring(@fromTime,@x+1,99))
-- Figure out what to do
SELECT @FromTime =
CASE
WHEN IsNumeric(@tmPortion) = 1 THEN @dtPortion+' '+@tmPortion+':00'
WHEN @tmPortion = 'NOON' THEN @dtPortion+' 12:00pm'
ELSE
@dtPortion+' 12:00pm'
END
SET @from =CONVERT(DATETIME, '01/01/2000 12pm')
RETURN(@from)
END
Go
Надеюсь, это поможет вам начать