【问题标题】:Converting Varchar to Datetime for Stored procedure input将 Varchar 转换为 Datetime 以用于存储过程输入
【发布时间】:2014-04-17 18:17:19
【问题描述】:

我想在 T-SQL 中的存储过程中使用 datetime 参数,如果 NULL 将恢复为 12/31/9999

我的代码如下所示:

EXEC abc.someStoredProc @i_param1, @i_param2, ISNULL(@l_Termination_date, '12/31/9999')

我得到一个错误:

“@l_Termination_date”附近的语法不正确

我尝试过使用 convert 和 cast(例如:

 ISNULL(@l_Termination_date,CAST('12/31/9999' AS datetime)) 

但似乎无法正确处理。我做错了什么?

【问题讨论】:

    标签: sql sql-server tsql


    【解决方案1】:

    您可以传递变量或文字作为参数来执行存储过程,(或调用 少数 个特定函数之一),但您不能使用任意表达式。

    将其移至单独的步骤:

    SET @l_Termination_date = ISNULL(@l_Termination_date,'99991231')
    EXEC        abc.someStoredProc
            @i_param1
          , @i_param2
            ,@l_Termination_date
    

    (如果您不想覆盖@l_Termination_date,请使用单独的变量)

    【讨论】:

      【解决方案2】:
      DECLARE      @l_Termination_date DATE ; 
      SET @l_Termination_date = ISNULL(@l_Termination_date,'12/31/9999')
      EXEC   dbo.USP_abc.someStoredProc (
      @i_param1
      , @i_param2
      ,@l_Termination_date )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-22
        • 1970-01-01
        • 1970-01-01
        • 2010-09-09
        • 1970-01-01
        • 2017-11-29
        相关资源
        最近更新 更多