【发布时间】:2019-04-23 12:02:02
【问题描述】:
我有下面的项目表及其活动期间(期间用 FROM 和 TO 日期定义):
ID | ProjID | ActiveFrom | ActiveTo
===+========+============+============
1 | 20 | 2018-01-01 | 2018-01-20
2 | 20 | 2018-02-05 | 2018-02-12
3 | 20 | 2018-02-20 | 2018-02-27
4 | 30 | 2018-01-15 | 2018-02-15
当然,一个项目可以有任意数量的活动期。
我需要一个 SQL 查询(函数),如果给定项目在某个给定日期(在某些项目活动期间内的给定日期)处于活动状态,它将返回 true/false。
【问题讨论】:
-
太棒了!那么到目前为止你有tried anything 吗?
-
提示:
WHERE和一些日期比较。 -
是的,我尝试了一些方法,但我遇到了任意数量的周期的问题。如果知道周期数,那么就很容易了,但是如何在未知的周期数内进行检查。
-
提示:
SELECT CASE COUNT(*) WHEN > 0 THEN TRUE ELSE FALSE FROM project WHERE '2018-11-21' BETWEEN(ActiveFrom, ActiveTo) -
感谢@AntonyGibbs,这是一个很好的提示:SELECT COUNT(*) FROM projects WHERE projId=20 AND '2018-01-21' BETWEEN ActiveFrom AND ActiveTo