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
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
相关文章推荐
- mongodb 添加用户及权限设置详解
- MySQL zabbix 流量统计分析脚本(内部业务需求)
- Redis 未授权访问配合 SSH key 文件利用分析
- 如何修改mysql 并发数
- ITOO---"系统设置"之数据库表
- spring-redis SortedSet类型成员的过期时间处理
- mySql ERROR 1046(3D000): No Datab
- MySQL 清除表空间碎片
- MySQL大量数据插入各种方法性能分析与比较
- oracle中的(+)
- mysqldump导入导出数据库基本方法
- Mysql 导入数据库方法 及失败解决
- MySQL新建用户,授权,删除用户,修改密码
- 基于Twemproxy的Redis集群方案
- mysql数据库目录存放位置更改
- 上传excel数据到数据库中
- Mysql授权远程访问
- sql 数据库 导入/导出 excel 的基…
- SQL Server DATEDIFF() 函数
- MySQL命令行合集