【发布时间】:2017-08-23 15:27:25
【问题描述】:
我有一个包含这些字段的表格:
Id int(11) pk,
Start_date date,
End_date date,
type tinyint(1),
Frequency int.
我想在此表上进行选择,其中 start_date+frequency = @date(可变日期)直到 end_date(循环)。
如何用 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的查询结果可以是多条记录。最后我想在唯一选择中联合类型 0 和 1 的结果。
【问题讨论】:
-
请提供样本数据和想要的结果。
-
SQL 是一种强大的语言。如果你以正确的方式做事,你几乎不需要循环。一切都应该根据设定来完成。你能解释一下你想达到什么目标吗?
-
@Zack 检查我的编辑,谢谢
-
@PM77-1 检查我的编辑,谢谢
-
因此,用较少的专注于错误解决方案的术语来说,您想确定
start_date和@date之间的差异(以天为单位)是否是frequency的整数倍?
标签: mysql sql phpmyadmin