我接触存储过程不久,今天传递datetime参数是老出错:从数据类型 nvarchar 转换为 datetime 时出错
EXEC [dbo].[csp_analysis_bts]
@BTS_ALARM_TIME = N'2012-01-01',
@BTS_RECOVER_TIME =getdate()
居然一直报错,把getdate()改成具体的时间N'2012-08-01'居然就没问题了,难道存储过程传入参数不能使用函数,要使用具体值?开始我怀疑格式不对,后然用convert函数转换也不对。
下面试我的存储过程
USE [BSC_ALARM]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
esonbest
-- Create date: 2012年8月21日
-- Description: 掉站统计分析
-- =============================================
ALTER PROCEDURE [dbo].[csp_analysis_bts]
-- Add the parameters for the stored procedure here
@BTS_ALARM_TIME datetime,
@BTS_RECOVER_TIME datetime
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
,a.BTS_ALARM_TIME as '掉站时间',a.BTS_RECOVER_TIME as '回复时间',b.区县,b.基站重要性
where
c.掉站时间 between @BTS_ALARM_TIME and @BTS_RECOVER_TIME
order by c.区县,c.基站编号,c.掉站时间 desc
END