SQL Server执行存储过程中 字符串 转换为 DATETIME

我建立了一个对表User增加记录的存储过程,如下:CREATEPROCEDURE[dbo].[user_add]@密码varchar(20),@昵称nchar(10),@... 我建立了一个对表User增加记录的存储过程,如下:
CREATE PROCEDURE [dbo].[user_add]
@密码 varchar(20),
@昵称 nchar(10),
@性别 nchar(2),
@生日 datetime,
@邮箱 varchar(50),
@地址 varchar(50)
AS
BEGIN TRANSACTION ADDUSER
SET NOCOUNT ON;
DECLARE @ReleaseDate AS datetime
SET @ReleaseDate = GETDATE()

INSERT INTO [user] (密码,昵称,性别,生日,邮箱,地址,注册日期)
VALUES (@密码,@昵称,@性别,@生日,@邮箱,@地址,@ReleaseDate)

SELECT 用户ID,昵称 FROM [user] WHERE 用户ID=@@IDENTITY
COMMIT TRANSACTION ADDUSER

而当我执行存储过程时,我需要把字符串表示的时间转换为Datetime类型;但执行时总是提示错误.
我的执行语句是:
EXEC user_add '19900101','用户','男',CONVERT(DATETIME,'01/01/1990'),'XXX@163.com','广东'.
提示的错误是:
消息 156,级别 15,状态 1,第 2 行
关键字 'CONVERT' 附近有语法错误。

但我不使用存储过程,而直接使用Insert语句时,用同样的CONVERT(DATETIME,'01/01/1990')却没有错,执行成功.

我很想知道这是为什么.
真的就如一楼所说的可以.
DECLARE @date AS DATETIME
SET @date = CONVERT(DATETIME,'07/22/1986')
EXEC user_add '19900101','用户','男',@date,'XXX@163.com','广东'.
这样真的行.

但有一个问题,我是想把这些SQL语句写到.cs文件中的,难道要那么麻烦的把声明语句都写上去吗?
展开
 我来答
leo_fei5210
2009-03-14 · TA获得超过306个赞
知道小有建树答主
回答量:455
采纳率:0%
帮助的人:234万
展开全部
能在执行是转换吗?你在上面定义个变量,把转换的赋值给它,下面直接用变量,你在CONVERT(DATETIME,'01/01/1990',120),试试看是什么结果
嗯,忍了吧,做程序就是要有耐心
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式