SQL利用游标遍历日期查询的过程详解

需求:我有个存储过程,每次执行需要带入一个连续的日期。我想遍历执行出一个月的时间,怎么搞?

我本来的想法是:程序里面写一个for循环,循环里面循环传日期去执行这个存储过程。

但是同事告诉我用游标,我从来没用过,就尝试了一下,没想到成功了哈哈,记录一下!

-- 1.声明游标变量
declare @begin_date varchar(50),
 @sumWeight varchar(50)
-- 2.声明游标
declare date_cursor cursor for -- date_cursor 是游标名 ,for 代表做什么
SELECT * FROM (
 select convert(varchar(10),dateadd(DAY,t2.number,t1.day),120) day from(select '2021-10'+'-01' day) t1,(select number from MASTER..spt_values WHERE TYPE='P' AND number>=0 and number<=31) t2 where convert(varchar(10),dateadd(DAY,t2.number,t1.day),120) like '2021-10%'
) T
WHERE  T.day >= '2021-10-01' AND T.day <= '2021-10-10'
--3.打开游标
open date_cursor
--4.提取数据
fetch next from date_cursor into @begin_date -- 将查询内容放入变量中
while @@FETCH_STATUS = 0  -- @@FETCH_STATUS 是一个全局变量,值为0时表示提取成功,存在数据, while 循环表示如果存在数据则执行
begin
    select @sumWeight= sum(NowNum) from MY_SP_LiTiKuDayStock where TIME=''+@begin_date+''  --我的业务处理
        print '开始时间:'+@begin_date+'当天重量:'+@sumWeight
        --print @begin_date
    fetch next from date_cursor into @begin_date  -- 继续提取下一行
end
--5.关闭游标
close date_cursor
--6.释放游标
deallocate date_cursor

写完大概就知道了:游标是个结果集,可以把它的每一条结果都给一个变量,你可以循环利用这个变量,相当于简介遍历了这个结果集

参考:

【SQL server数据库基础】游标的操作

https://blog.csdn.net/realoser/article/details/121529498

SQLServer用sql语句返回一个月所有的天数

https://blog.csdn.net/weixin_30265171/article/details/95729926

到此这篇关于SQL利用游标遍历日期查询的文章就介绍到这了,更多相关SQL游标遍历日期查询内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SQL Server遍历表中记录的2种方法(使用表变量和游标)

    SQL Server遍历表一般都要用到游标,SQL Server中可以很容易的用游标实现循环,实现SQL Server遍历表中记录.本文将介绍利用使用表变量和游标实现数据库中表的遍历. 表变量来实现表的遍历 以下代码中,代码块之间的差异已经用灰色的背景标记. 复制代码 代码如下: DECLARE @temp TABLE ( [id] INT IDENTITY(1, 1) , [Name] VARCHAR(10) ) DECLARE @tempId INT , @tempName VARCHAR(

  • Mysql 日期格式化及复杂日期区间查询

    目录 前言 查询使用场景案例 时间区间查询 查询日期今天时间比较数据 常用的周期时间查询 mysql日期时间函数 1 得当前日期+时间(date + time)函数:now() 2 获得当前日期+时间(date + time)函数:sysdate() 3 获得当前时间戳函数:current_timestamp, current_timestamp() 4 获取当前日期(date)函数: curdate() mysql日期时间转换函数 1 日期时间转换字符串格式 2 字符串转换为日期时间 3 (日

  • mysql如何查询日期与时间

    前言: 在项目开发中,一些业务表字段经常使用日期和时间类型,而且后续还会牵涉到这类字段的查询.关于日期及时间的查询等各类需求也很多,本篇文章简单讲讲日期及时间字段的规范化查询方法. 1.日期和时间类型概览 MySQL支持的日期和时间类型有 DATETIME.TIMESTAMP.DATE.TIME.YEAR ,几种类型比较如下: 涉及到日期和时间字段类型选择时,根据存储需求选择合适的类型即可. 2.日期和时间相关函数 处理日期和时间字段的函数有很多,有的经常会在查询中使用到,下面介绍下几个相关函数

  • SQL利用游标遍历日期查询的过程详解

    需求:我有个存储过程,每次执行需要带入一个连续的日期.我想遍历执行出一个月的时间,怎么搞? 我本来的想法是:程序里面写一个for循环,循环里面循环传日期去执行这个存储过程. 但是同事告诉我用游标,我从来没用过,就尝试了一下,没想到成功了哈哈,记录一下! -- 1.声明游标变量 declare @begin_date varchar(50), @sumWeight varchar(50) -- 2.声明游标 declare date_cursor cursor for -- date_cursor

  • SQL Server中row_number分页查询的用法详解

    ROW_NUMBER()函数将针对SELECT语句返回的每一行,从1开始编号,赋予其连续的编号.在查询时应用了一个排序标准后,只有通过编号才能够保证其顺序是一致的,当使用ROW_NUMBER函数时,也需要专门一列用于预先排序以便于进行编号. ROW_NUMBER() 说明:返回结果集分区内行的序列号,每个分区的第一行从1开始. 语法:ROW_NUMBER () OVER ([ <partition_by_clause> ] <order_by_clause>) . 备注:ORDER

  • 利用Spring MVC+Mybatis实现Mysql分页数据查询的过程详解

    前言 因为最近没什么事,所以想着写一个分页的例子出来给大家分享一下.这个案例分前端和后台两部分,前端使用面向对象的方式写的,里面用到了一些回调函数和事件代理,有兴趣的朋友可以研究一下.后台的实现技术是将分页Pager作为一个实体对象放到domain层,当前页.单页数据量.当前页开始数.当前页结束数.总数据条数.总页数都作为成员属性放到实体类里面. 以前项目数据库用的是oracle,sql语句的写法会从当前页开始数到当前页结束数查询数据.刚刚在这纠结了很长时间,查询到的数据显示数量总是有偏差,后来

  • Sql Server使用cursor处理重复数据过程详解

    /************************************************************ * Code formatted by setyg * Time: 2014/7/29 10:04:44 ************************************************************/ CREATE PROC HandleEmailRepeat AS DECLARE email CURSOR FOR SELECT e.email

  • TinkerPop框架查询Gremlin图实现过程详解

    目录 前言 肇始于 TinkerPop 文档 Structure 接口结构与实现思路 Graph 接口 Element 接口 Vertex 接口 Edge 接口 Property 接口 VertexProperty 接口 实现自己的 Structure 更进一步 前言 本文记录了笔者摸索图数据库过程中遇到的问题.一些思考(闲谈)与实现思路. 做此记录的目的是沉淀经验.完善巩固知识体系,同时以此为始,培养撰写文本.输出内容的能力与习惯. 本文内容源自笔者自身见识,仅为一家之言,不足之处望诸位批评指

  • python 利用pyttsx3文字转语音过程详解

    这篇文章主要介绍了python 利用pyttsx3文字转语音过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 # -*- coding: utf-8 -*- import pyttsx3 engine = pyttsx3.init() with open("all.txt",'r',encoding='utf-8') as f: while 1: line = f.readline() print(line, end = '')

  • jquery 时间戳转日期过程详解

    这篇文章主要介绍了jquery 时间戳转日期过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 搜了一下发现这个时间戳转时间的代码很好用,附上实践的代码 结果如下 代码如下 /** * 时间戳转日期 * @param timestamp * @returns {*} */ function timestampToTime(timestamp) { var date = new Date(timestamp * 1000);//时间戳为10位

  • Python使用sql语句对mysql数据库多条件模糊查询的思路详解

    def find_worldByName(c_name,continent): print(c_name) print(continent) sql = " SELECT * FROM world WHERE 1=1 " if(c_name!=None): sql=sql+"AND ( c_name LIKE '%"+c_name+"%' )" if(continent!=None): sql=sql+" AND ( continent

  • Java中JDBC实现动态查询的实例详解

    一 概述 1.什么是动态查询? 从多个查询条件中随机选择若干个组合成一个DQL语句进行查询,这一过程叫做动态查询. 2.动态查询的难点 可供选择的查询条件多,组合情况多,难以一一列举. 3.最终查询语句的构成 一旦用户向查询条件中输入数据,该查询条件就成为最终条件的一部分. 二 基本原理 1.SQL基本框架 无论查询条件如何,查询字段与数据库是固定不变的,这些固定不变的内容构成SQL语句的基本框架,如 select column... from table. 2.StringBuilder形成D

  • mybatis3.4.6 批量更新 foreach 遍历map 的正确姿势详解

    好久没编码了!最近开始编码遇到一个问题 !一个批量修改的问题,就是mybatis foreach 的使用. 当时使用的场景 ,前端 传逗号拼接的字符串id, 修改id对应数据的数据顺序 ,顺序 就是id 的顺序. 就是一个条件(单个id值) 修改一个值(传入的id的顺序) , 1. 把条件作为Map 的key 修改值是value,用map入参 2.用List<Object> 或者数组 ,把条件和值封装成对象放进list集合或者array数组 3.代码使用for循环调用mapper方法 穿两个参

随机推荐