【发布时间】:2020-01-23 16:13:39
【问题描述】:
我正在尝试创建一个 UDF 以使用 SSMS 添加 3 小时的日期值,但在调用该函数时我一直遇到以下错误;
从字符串转换日期和/或时间时转换失败
这就是我对 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
【问题讨论】:
-
也许我遗漏了一些东西,但你为什么不直接使用内置的DATEADD 函数呢? .... 和适当的数据类型?
-
@Uueerdo,该函数有效,它是在 UDF 内部调用的函数,但我需要格式化许多日期数据点。查询变得太长。
标签: sql sql-server tsql datetime sql-function