【发布时间】:2013-01-25 09:48:22
【问题描述】:
我有以下程序:
ALTER PROCEDURE [dbo].[myProcedute]
@mydate VARCHAR(8000) = NULL
IF @mydate = ''
BEGIN
SET @mydate = NULL
END
ELSE
BEGIN
SET @mydate = CONVERT(DATETIME, @mydate, 103) -- dd/mm/yy
END
INSERT INTO dbo.myTable(theDate) VALUES(@mydate)
我是这样执行的:
EXEC [dbo].[myProcedure] '02/02/2012'
执行后我得到这个错误: 从字符串转换日期时间时转换失败。
我从我的 vb6 代码执行它,日期可能会有所不同。这次是 '02/02/2012' 但下一次可能是 ''(空)。
当它作为 '' 出现时,我需要它插入一个 NULL,正如您在 IF 子句中看到的那样。
为什么会出现此错误?
非常感谢!
【问题讨论】:
-
为什么不把
@mydate的定义改成DATE呢? -
试试 IF LTRIM(@mydate) = ''
-
我建议 TO_DATE(LTRIM(@mydate),'DD/MM/YY')
-
将其作为
datetime传递会节省很多问题。 -
@Luv - VB6 表示 ADO 经典,我认为 2008 年的类型从未更新过。
标签: sql datetime stored-procedures type-conversion