sql - 将日期值(动态变化)传递给存储过程的输入参数
问题描述
如果您看到下面的存储过程,它有2019-01-01
,2019-12-31
作为输入。
我想做的是,我需要通过2019-01-01
,2019-01-31
然后2019-02-01
,2019-02-28
一直到 12 月。
任何人都可以帮助如何动态地按月传递日期时间。
Exec storedprcedurename '2019-01-01','2019-12-31'
解决方案
您可以使用 while 循环和 date add 来执行它。此外,您可能需要设置一个最大日期,以便它不会进入无限循环。
Declare @datemin date = '2019-01-01', @maxdate date = '2019-12-31'
While @datemin <= @maxdate
Begin
Declare @dateend date = dateadd(day, -1, dateadd(month,1,@datemin ))
Exec storedprcedurename @datemin , @dateend
set @datemin = dateadd(month, 1, @datemin)
end
推荐阅读
- dynamics-crm - 如何为 Dynamics CRM 实施中间件服务
- sql-server - 如何修复“IF 语句附近的语法错误”?
- android - Kotlin如何在片段内设置tablayout(viewpager不工作)
- docker - Docker 容器:ping 一段定义的时间
- php - 在不使用数据库的情况下每天计算唯一访问者并重置计数器
- javascript - 如何使从数组中默认单击的按钮
- javascript - 使用组合(混合)图表时,Chart.js x 轴时间不显示值
- angular6 - 如何在角度 6 中为验证复选框设置图像
- apache-kafka - 无法使用 Kafka 测试在 Spring Cloud Stream 中读取 JSON
- datetime - 将 'Mon Dec 12 10:55:11 UTC 2016' 转换为 Hive 中的日期时间