Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL-在循环中为日期添加天数_Mysql_Sql_Phpmyadmin - Fatal编程技术网

Mysql SQL-在循环中为日期添加天数

Mysql SQL-在循环中为日期添加天数,mysql,sql,phpmyadmin,Mysql,Sql,Phpmyadmin,我有一个包含以下字段的表: Id int(11) pk, Start_date date, End_date date, type tinyint(1), Frequency int. 我想在这个表上做一个选择,其中start_date+frequency=@datea变量date直到end_dateloop 如何使用sql实现这一点 提前谢谢 编辑: 例如,可变日期为: SET @date = '2017-03-30' 类型可以是0或1: 如果type=0,我的查询是: sele

我有一个包含以下字段的表:

Id int(11) pk, 
Start_date date, 
End_date date, 
type tinyint(1),
Frequency int. 
我想在这个表上做一个选择,其中start_date+frequency=@datea变量date直到end_dateloop

如何使用sql实现这一点

提前谢谢

编辑: 例如,可变日期为:

SET @date = '2017-03-30'
类型可以是0或1:

如果type=0,我的查询是:

 select * from table 
 where type = 0 and start_date <= @date AND end_date>=@date
如果type=1,则频率是一个以天为间隔的整数字段。因此,我必须检查将这个值添加到start_date是否等于@date

如果是,我必须返回当前记录 如果否,我必须迭代此操作

Date current = start_date + interval of 'frequency' days
while(current < end_date){
if(current == @date)
(this is the record I want)
else
current+=frequency
}

类型1的查询结果可以是多条记录。最后,我想在unique select中合并类型0和1的结果

看起来您想要的是:

select * from table 
where
   start_date <= @date AND
   end_date>=@date AND
   (
     type = 0 OR
     (
        type = 1 AND
        mod(datediff(@date,start_date),frequency) = 0
     )
   )

请提供示例数据和所需结果。SQL是一种功能强大的语言。如果你用正确的方式做事,你几乎不需要一个循环。一切都要有条不紊地进行。你能解释一下你想要实现什么吗?@Zack检查我的编辑,thanks@PM77-1检查我的编辑,Thankso,为了减少对错误解决方案术语的关注,您想确定开始日期和@date之间的差值(以天为单位)是否是频率的整数倍?