mysql - 用于选择年份在两个日期之间的行的 SQL 查询

标签 mysql sql date

给定一个包含 from_date 日期和 to_date 日期列的表,我想选择其中年份(例如 2007 年)是其中一个日期或两个日期或位于两个日期之间的年份的所有数据集。

如何使用 mySQL 实现此目的?

表:

create Table Articleprice
(`ArtikelpreisNR` int, `ArtikelNR` int, `from_Date` date, `to_date` date, `price` int);

测试数据示例

insert into Articleprice
(`ArtikelPreisNR`, `ArtikelNR`,`from_Date`, `to_Date` ,`price`)

values (1, 1, '2006-7-04', '2008-7-04', 10);

SQL: 当 from_date 和 to_date = 2007 时,这仅返回那些

SELECT
MIN(price)
FROM  Articleprice
WHERE Articleprice.from_Date >= '2007/01/01' and Articleprice.to_Date <= '2007/12/31';

我需要做什么才能解决我的案件?

最佳答案

首先,您使用年份构建完整的日期。对于 2007 年,日期将为 2007-01-012007-12-31(假设包含结束日期)。

接下来你使用overlapping dates query查找 (i) 结束于 (ii) 开始于 (iii) 包含或 (iv) 包含在 2007 年之内的所有行。查询很简单:

SELECT * FROM Articleprice
WHERE '2007-12-31' >= from_Date AND to_date > '2007-01-01'

关于mysql - 用于选择年份在两个日期之间的行的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28927400/

相关文章:

sql - 在包含日期范围行的表格中,从每一行中,每天生成一行包含使用小时数

date - DatePicker 上显示的格式日期

Mysql - 将多个 INT 字段连接在一起以创建 DATE 字段

php - 从 PHP 打印 MongoDB 日期

android - Android 上的 Perl 代码

mysql - 从本地数据库将数据加载到 Bigquery

sql - "association table"的正确名称是什么(多对多关系)

mysql - 我应该在值数量有限的列上使用索引吗?

mysql - 选择随机日期范围

sql - 自动标准化为 1NF(删除重复列)