我有一个 MySQL 数据库,其中有一个表,其中包含一个数据字段和一个“周期”字段(以月为单位 - 整数)。
这个想法是,该日期表示在我公司内部开始一个项目的截止日期。 “期间”是指完成该任务所需的时间,以月为单位。
我需要选择将影响给定年份的行。因此,如果我要生成 2014 年的报告,我需要选择这样的行:日期+期间在 2014 年之内。
在程序中执行此操作很容易,但我正在寻找一种在查询中执行此操作的方法 - 如果可能的话。
所以基本上我只需要一种方法来对查询中的日期和整数求和,其中整数是月数。
有什么想法吗?
最佳答案
在 MySQL 和其他 RDMS 系统中进行日期运算很容易。您需要开始日期不晚于相关年份或结束日期不早于相关年份的所有记录。就是这个表达式:
NOT(YEAR(start_date) > 2014 OR YEAR(start_date + INTERVAL period MONTH) < 2014)
这在逻辑上简化为
YEAR(start_date) <= 2014 AND YEAR(start_date + INTERVAL period MONTH) >= 2014
所以这个查询就可以了。
SELECT whatever, whatever
FROM project
WHERE YEAR(start_date) <= 2014
AND YEAR(start_date + INTERVAL period MONTH) >= 2014
AND (whatever other selection criteria you have)
这将提供 2014 年期间活跃的所有项目,包括 2014 年之前开始的项目以及到当年年底仍在进行中的项目。
关于mysql - 使用 MySQL 选择具有设定日期+月份偏移量的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23634283/