我写了个存储过程,如下:
CREATE PROCEDURE IOIOT_bbsTopic_DeleteByDate
(
  @startDate varchar(255),
  @endDate varchar(255)
)
AS
  BEGIN
   declare @strsql nvarchar(255)
   IF @startDate <> '' and  @endDate <> ''
      SET @strsql = 'DELETE FROM [table1] WHERE topDate BETWEEN '+ Convert(datetime,@startDate,120) + ' and  '+Convert(datetime,@endDate,120)
   EXEC (@strsql)
  ENDGO可是每当我执行的时候:
exec IOIOT_bbsTopic_DeleteByDateAndFunction '2007-02-02','2007-02-06'
就报这个错:从字符串转换为 datetime 时发生语法错误。
这是怎么解决啊,谢谢大家来指教一下!!!

解决方案 »

  1.   

    --改为
    CREATE PROCEDURE IOIOT_bbsTopic_DeleteByDate
    (
      @startDate varchar(255),
      @endDate varchar(255)
    )
    AS
      BEGIN
       declare @strsql nvarchar(255)
       IF @startDate <> '' and  @endDate <> ''
          SET @strsql = 'DELETE FROM [table1] WHERE topDate BETWEEN '''+ 
                Convert(datetime,@startDate,120) + ''' and  '''+Convert(datetime,@endDate,120)+''''
       EXEC (@strsql)
      ENDGO
      

  2.   

    CREATE PROCEDURE IOIOT_bbsTopic_DeleteByDate
    (
      @startDate varchar(255),
      @endDate varchar(255)
    )
    AS
      BEGIN
       declare @strsql nvarchar(255)
       IF @startDate <> '' and  @endDate <> ''
          SET @strsql = 'DELETE FROM [table1] WHERE topDate BETWEEN '''+@startDate + ''' and  '''+@endDate +''''
     EXEC (@strsql)
      ENDGO
      

  3.   

    CREATE PROCEDURE IOIOT_bbsTopic_DeleteByDate
    (
      @startDate varchar(255),
      @endDate varchar(255)
    )
    AS
      BEGIN 
       IF @startDate <> '' and  @endDate <> ''
         exec('DELETE FROM [table1] WHERE topDate BETWEEN '''+ @startDate+ ''' and  '''+@endDate +'''')
      ENDGO