mysql - 使用 MySQL 选择具有设定日期+月份偏移量的行

标签 mysql sql date duration

我有一个 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/

相关文章:

php - 如何将 UNION ALL 查询的结果显示为链接?

sql - 默认为空字符串的列

mysql - 多对多表的实际删除与删除标志

sql - oracle 中的 DATE/TIME - 日期持续时间函数

javascript - 比较在 javascript 中不使用 toLocaleDateString() 的日期?

PHP PDO MySQL - 不使用 DSN 上指定的主机

mysql - 如何用php文件备份数据库?

php - MSSQL 日期到 php

MySQL - 从现有 .sql 文件运行脚本时遇到问题,该文件应创建架构、其表并在 Workbench 中插入所有必要的数据

Mysql 搜索字符串中的组或特定单词