SQL查询以选择年份在两个日期之间的行

时间:2015-03-08 14:12:56

标签: mysql sql date

给定一个带有from_date日期和to_date日期列的表,我想选择一年中的所有数据集,例如2007年,是其中一个日期或两者之间的年份,或者是两个日期之间的数据。 / p>

我如何使用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';

为了解决我的案件,我需要做些什么?

2 个答案:

答案 0 :(得分:1)

假设您的日期实际上是日期而不是字符串,您需要在查询中使用正确的日期格式:YYYY-MM-DD不是YYY / MM / DD:

WHERE Articleprice.from_Date >= '2007-01-01' and Articleprice.to_Date <= '2007-12-31';

答案 1 :(得分:1)

首先,您使用年份构建完整日期。对于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'