您的位置:首页 > 数据库

SQL SERVER传递datetime参数注意事…

2016-02-24 11:32 309 查看
我接触存储过程不久,今天传递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;

SELECT *

FROM

(SELECT distinct(Substring(a.BTS_ID,1,6)) as '基站编号',b.基站名称,
'掉站时长'=
CASE

WHEN a.BTS_RECOVER_TIME='' THEN
datediff(mi,a.BTS_ALARM_TIME,getdate())

WHEN
a.BTS_RECOVER_TIME<>'' THEN
datediff(mi,a.BTS_ALARM_TIME,a.BTS_RECOVER_TIME)

END

,a.BTS_ALARM_TIME as '掉站时间',a.BTS_RECOVER_TIME as
'回复时间',b.区县,b.基站重要性

FROM ALARM_LIST
a,BTS_2G_DETAIL_INFO b

WHERE
(Substring(a.BTS_ID,1,6)=b.基站编号))
AS c
where
c.掉站时间 between @BTS_ALARM_TIME and
@BTS_RECOVER_TIME

order by c.区县,c.基站编号,c.掉站时间 desc
END
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: