写了个程储过程,其中有两个时间参数。IF exists(SELECT id FROM dbo.sysobjects WHERE id=object_id(N'dbo.up_getUseTotal'))
DROP PROCEDURE up_getUseTotal
GOCREATE PROCEDURE up_getUseTotal
  @vF_DID Varchar(1) ='',
  @vF_ID Varchar(10) ='',
  @vF_CateGory Varchar(30) ='',
  @vF_Name Varchar(30) ='%',
  @vT_From Varchar(30) =getDate, ////////////// 这里如果改成'2003-01-01'
  @vT_To Varchar(30) =getDate    ////////////// 格式的字串就可以。
AS
  
  IF exists(SELECT id from tempdb.dbo.sysobjects WHERE id=object_id(N'tempdb.dbo.##tmp_use'))
    DROP TABLE tempdb.dbo.##tmp_use  SELECT
    U_FID,
    sum(datediff(hour,U_Open,U_Close)) as PTime,
    sum(U_PQty) as PQuantity
  INTO ##tmp_use
  FROM
    L_Facilities.dbo.F_FUse
  WHERE U_Open>@vT_From AND U_Open<@vT_To  //这行去掉就正确。
  GROUP BY
    U_FID
GOexec up_getUseTotalselect * from ##tmp_use//////////////////////////////////////////////////////////////////////
如把两个参数改成 Datetime ,就是不用where语句都发生如下错误。
从字符串转换为 datetime 时发生语法错误。如果使用Varchar 类别则正确,但是参数的默认值不能用getDate()
只能用'2003-01-01'之类的字串。但我默认值想取当前值怎么办?