SQL查找包含特定年份日期的期间

时间:2016-03-23 09:41:39

标签: sql sql-server-2008

我有表格(我们称之为AAA),其中包含3个列 ID,DateFrom,DateTo

我想编写一个查询,以便在特定年份(例如2016年)的DateFrom-DateTo期间内返回包含(甚至1天)的所有记录。

我正在使用SQL Server 2005

谢谢

3 个答案:

答案 0 :(得分:3)

另一种方式是:

SELECT <columns list>
FROM AAA
WHERE DateFrom <= '2016-12-31' AND DateTo >= '2016-01-01'

如果您在DateFromDateTo上有索引,则此查询允许Sql-Server使用该索引,这与Max xaM的答案中的查询不同。
在一个小表上你可能看不出有什么区别,但是在一个大表上,使用该查询会有很大的性能损失,因为如果where子句中的列在函数内部,则Sql-Server不能使用索引

答案 1 :(得分:1)

试试这个:

SELECT * FROM AAA
WHERE DATEPART(YEAR,DateFrom)=2016 OR DATEPART(YEAR,DateTo)=2016

答案 2 :(得分:1)

您可以使用以下查询

select * from Table1 
WHERE DateDiff(day,DateFrom,DateTo)>0 
      AND YEAR(DateFrom) = YEAR(DateTo)

结果如下:

enter image description here

享受:D!