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文件中的,难道要那么麻烦的把声明语句都写上去吗? 展开
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文件中的,难道要那么麻烦的把声明语句都写上去吗? 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询