Sql 如何使用convert()函数?

Sql 如何使用convert()函数?,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我想把datetime转换成nvarchar(64)。以下代码是用作一系列存储过程参数的一部分的代码段。我已经包括了有错误的区域 关键字“CONVERT”附近的语法不正确 exec mysproc...@Password=N'',@IsAuthorized=1, @UTCTIMESTAMP=CONVERT(NVARCHAR(64), GETUTCDATE(), 121), @UserId=@SingleId output 知道这种语法有什么问题吗?在调用存储过程之前,需要执行类似的计算,但在将

我想把datetime转换成nvarchar(64)。以下代码是用作一系列存储过程参数的一部分的代码段。我已经包括了有错误的区域

关键字“CONVERT”附近的语法不正确

exec mysproc...@Password=N'',@IsAuthorized=1,
@UTCTIMESTAMP=CONVERT(NVARCHAR(64), GETUTCDATE(), 121),
@UserId=@SingleId output

知道这种语法有什么问题吗?

在调用存储过程之前,需要执行类似的计算,但在将值传递给参数的过程中不能这样做。例如:

DECLARE @utc NVARCHAR(64) = CONVERT(NVARCHAR(64, GETUTCDATE(), 121);

EXEC mysproc 
  @Password = N'',
  @IsAuthorized = 1,
  @UTCTIMESTAMP = @utc,
  @UserId = @SingleId OUTPUT;
这并不局限于函数调用;你也不能这样做:

EXEC sp_help @objname = N'sys.' + 'tables';
结果:

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '+'.

您需要使用中间变量,因为您不能在存储过程参数列表中内联使用大多数函数(例外情况是
@
系统函数,例如
@@SPID
,它们过去被称为全局变量)