преобразовать строку в дату и время в функцию SQL Server - PullRequest
0 голосов
/ 09 сентября 2011

Я пишу пользовательскую функцию в SQL Server:

Это выглядит так:

CREATE FUNCTION FormatDate(@fromtime nvarchar(50))
RETURNS DATETIME
AS 
BEGIN

    DECLARE @tempfrom datetime
    DECLARE @tempto nvarchar(50)

    set @tempfrom =  Convert(datetime, @fromtime, 100) 
    RETURN @tempfrom

END

select dbo.FormatDate('08/17/2010 4:30')

Когда я пытаюсь запустить это, я получаю следующую ошибку:

Ошибка преобразования при преобразовании значения nvarchar '08 / 17/2010 4:30 'в тип данных int.

Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 09 сентября 2011

100, которое вы указываете в конвертации, используется для форматирования при выборе данных, а не для форматирования хранилища данных.

Дата и время просто хранятся как дата и время - вот и все (я имею в виду, что в зависимости от настроек SQL это может быть ММ / ДД / ГГГГ или ДД / ММ / ГГГГ).

Но если вы просто сделаете это:

set @tempfrom =  Convert(datetime, @fromtime)

теперь это дата и время, которое вы можете преобразовать в желаемое форматирование, обернув его в другое преобразование:

convert(varchar, convert(datetime, @fromtime), 100)
1 голос
/ 09 сентября 2011

Почему вы используете стиль 100?

CREATE FUNCTION dbo.FormatDate -- schema prefix always!
(
    @fromtime VARCHAR(50) -- varchar
)
RETURNS DATETIME
AS 
BEGIN -- don't need variables anywhere
   RETURN(CONVERT(DATETIME, @fromtime));
END
GO
...