Пользовательская функция для добавления часов к значению даты - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь создать UDF, чтобы добавить 3 часа к значениям даты, используя SSMS, и продолжаю сталкиваться с следующей ошибкой при вызове функции:

Преобразование не удалось при преобразовании даты и / или время из символьной строки

Вот как я вызываю UDF:

SELECT TOP 5 dbo.to_eat('updated') FROM SCHEMA.TABLE_NAME

Мой запрос на создание функции следующий:

CREATE FUNCTION [dbo].[to_eat](@date_field NVARCHAR(20)) RETURNS CHAR(20) AS 
BEGIN
RETURN CASE
    WHEN @date_field <>'' AND @date_field IS NOT NULL AND @date_field <> '1900-01-01 00:00:00.0' THEN DATEADD(HOUR, -3, @date_field)
    -- WHEN @rating = 'AA' OR @rating LIKE 'AA[+-]'   THEN 2
    -- WHEN @rating = 'BBB' OR @rating LIKE 'BBB[+-]' THEN 3
    ELSE NULL
  END 
END

1 Ответ

2 голосов
/ 23 января 2020

Вы должны удалить одинарные кавычки вокруг имени столбца, иначе это буквенная строка, а не имя столбца:

SELECT TOP 5 dbo.to_eat(updated) FROM SCHEMA.TABLE_NAME
...