我编写了一个将字符串转换为datetime的函数。所以,这就是我做的事情
CREATE FUNCTION formatit(
@fromtime VARCHAR(50) -- varchar
)
RETURNS DATETIME
AS
BEGIN
DECLARE @from varchar(50)
DECLARE @value
IF (CHARINDEX('NOON',@fromtime,0)) = 0 THEN
SET @from = CONVERT(DATETIME, @fromtime)
ELSE
SET @from =CONVERT(DATETIME, '01/01/2000 12pm')
RETURN(@from)
END
SELECT dbo.formatit('04/12/2011 NOON ')
所以,你可以看到,如果fromtime包含单词NOON我正在尝试使用默认日期。但是我收到了一个错误'从字符串转换日期时转换失败。'
当我进入任何时间如下午4点时它工作正常但在我中午时失败。请你知道我能处理的方式吗?
答案 0 :(得分:1)
这是有效的
declare @from datetime
SET @from =CONVERT(DATETIME, '01/01/2000 12:00 pm')
以下测试。
CREATE FUNCTION formatit(
@fromtime VARCHAR(50) -- varchar
)
RETURNS DATETIME
AS
BEGIN
DECLARE @from datetime
IF (CHARINDEX('NOON',@fromtime,0)) = 0
SET @from = CONVERT(DATETIME, @fromtime)
ELSE
SET @from =CONVERT(DATETIME, '01/01/2000 12pm')
RETURN(@from)
END
SELECT dbo.formatit('04/12/2011 NOON ')
答案 1 :(得分:1)
我认为您需要在12之后添加分钟,并在时间和上午/下午之间留出空格。见下文:
SET @from = CONVERT(DATETIME, '01/01/2000 12:00 PM')
答案 2 :(得分:1)
@from被声明为varchar,您将返回日期时间