sqlserver 存储过程要传时间的值 我要取1年的数据 怎么实现啊?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver 存储过程要传时间的值 我要取1年的数据 怎么实现啊?相关的知识,希望对你有一定的参考价值。

alter PROC getMore
as
-- exec getMore
DECLARE @nowtemp datetime
DECLARE @sql varchar(max)
set @nowtemp='20140101'
while (@nowtemp <'20140103')

begin
print convert(varchar(10),@nowtemp ,112)
set @sql='execute FG_WD_TB_CIS_DRADVICE_DETAIL_ls '+''''+@nowtemp
print @sql
--exec FG_WD_TB_CIS_DRADVICE_DETAIL_ls '@nowtemp'
set @nowtemp = @nowtemp+1

提问模糊,代码不完整并且有明显错误,没法准确回答你的问题。

mssql有很多日期时间类型函数可以使用,你需要1年数据,那么根据你execute的存储过程的参数要求,计算和拼接时间字符串就可以了,但格式从代码中看不出。

GETDATE() --获取当前日期时间
DATEADD(year,-1,GETDATE()) --获取1年前的时间

来自:求助得到的回答
参考技术A 一年时间范围 是从现在向后推一年 还是取往年一年 还是取当前年的1月1日到现在? 参考技术B Procedure带参数不就行了? 语法查一下HELP

编写一个SQLSERVER 存储过程

一个STUDENT表 其中 姓名NAME(10) NO( 30) ID自动增量列(100,10) 要求SNAME中所有前2个字母为“WA"的SNO前加上前缀’cay_'编写一个含有输出参数@ID的存储过程

当执行该过程时能够返回当前STUDENT表最大ID字段的值 并在输出穿口打印找到的最大值 如果最大值小于100,则显示”没有找到“

代码是最好的文字,不多说,请看我的代码,并给分,呵呵。

--step1. 建表
if exists(select * from sysobjects where id=object_id('student') and objectproperty(id,'IsTable')=1)
drop table student
go
create table student
(
id int identity(100,10) not null
,sname varchar(10) not null
,sno varchar(30) not null
)
go

--step2.建存储过程
if exists(select * from sysobjects where id=object_id('proc_demo') and objectproperty(id,'IsProcedure')=1)
drop procedure proc_demo
go
create procedure proc_demo
@o_maxid int output
as
set nocount on

--如果希望大小写敏感,使用第一句,因为SQL Server默认是大小写不敏感的
--update student set sno='cay_'+sno where ascii(substring(sname,1,1))=87 and ascii(substring(sname,2,1))=65 and sno not like 'cay_%'
update student set sno='cay_'+sno where sname like 'WA%' and sno not like 'cay_%'

print convert(varchar(10),@@rowcount)+'条记录符合条件并被处理'

select @o_maxid=max(id) from student where id>=100
if(@o_maxid is null) print '没有找到符合条件的最大记录'

set nocount off
go

--测试数据1
truncate table student
set identity_insert student on
insert into student(id,sname,sno)values(1,'WA1','1');
insert into student(id,sname,sno)values(2,'wa2','2');
insert into student(id,sname,sno)values(3,'3','3');
set identity_insert student off
go

--测试数据2
truncate table student
insert into student(sname,sno)values('WA1','1');
insert into student(sname,sno)values('wa2','2');
insert into student(sname,sno)values('3','3');
go

--测试过程
declare @maxid int
exec proc_demo @maxid out
print '最大id是'+convert(varchar(10),@maxid)
go
参考技术A 很对

以上是关于sqlserver 存储过程要传时间的值 我要取1年的数据 怎么实现啊?的主要内容,如果未能解决你的问题,请参考以下文章

我如何用JAVA调用存储过程取得 serveroutput?

SQL Server 存储过程中的可选参数?

sql server存储过程产生连续不重复编号

sqlserver过程中使用openquery 修改oracle数据时,存储过程中断,oracle的值被改为null

在oracle中创建存储过程的语法

SqlServer如何设置每秒执行存储过程