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之间的差值(以天为单位)是否是频率的整数倍?