SQL" 1939-01-01 00:00:00'附近的语法不正确。"尝试执行存储过程时

时间:2015-09-04 06:32:56

标签: sql-server sql-server-2008 tsql stored-procedures

我有一个如下存储过程:

ALTER procedure [dbo].[test_stored_procedure]

@id                         nvarchar(20),
@datefm                     datetime,
@dateto                     datetime

as
   ...
end

然后我尝试使用下面的SQL调用上面的存储过程:

exec test_stored_procedure @searchKey, cast('1900-01-01 00:00:00' as datetime), cast('1900-01-01 00:00:00' as datetime)

但执行时,我收到以下错误:

Incorrect syntax near '1900-01-01 00:00:00'.

如何解决这个问题?

1 个答案:

答案 0 :(得分:6)

您需要使用:

DECLARE
   @date_start DATETIME = '1900-01-01 00:00:00'
   ,@date_stop DATETIME = '1900-01-01 00:00:00';

EXEC test_stored_procedure @searchKey, @date_start, @date_stop;

或者:

EXEC test_stored_procedure @searchKey, '1900-01-01 00:00:00', '1901-01-01 00:00:00';

这是因为您无法使用EXEC的参数功能,请参阅doc。你只能通过:

  1. 可变
  2. DEFAULT
  3.   

    [[@parameter =] {value | @variable [OUTPUT] | [默认]