[英]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-01
和2007-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.