繁体   English   中英

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

[英]SQL query to select rows where the year is between two dates

给定具有from_date date和to_date 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';

为了解决我的问题,我需要做什么?

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

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

首先,您使用年份建立完整的日期。 2007年,该日期为2007-01-012007-12-31 (假设结束日期包含在内)。

接下来,您使用重叠日期查询来查找(i)在(ii)内部开始(iii)在(iii)中包含或(iv)在2007年之内的所有行。该查询很简单:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM