检查日期范围之间的任何日期是否在特定年份内

时间:2018-01-19 15:55:55

标签: sql tsql sql-server-2012

我在这个问题上绞尽脑汁。我有一系列广告系列及其相关的开始和结束日期。我正在尝试编写一个查询来列出2017年开始日期和结束日期之间至少有一天的广告系列。我原来的想法只是使用datepart():

datepart(yyyy,StartDt = 2017) OR datepart(yyyy,EndDt = 2017)

但是不会选择2017年之前开始并在2017年之后结束的广告系列,例如开始日期2016年1月1日和结束日期1/1/2018。

1 个答案:

答案 0 :(得分:5)

最简单的方法可能就是这样(这是我在进行临时表查询时使用的东西):

WHERE CampaignStartDate < '2018-01-01'
AND CampaignEndDate >= '2017-01-01'

这可以保证您的广告系列开始日期和结束日期与2017年至少有一些重叠。如果两个时间范围完全重叠,这是一种很好的测试方法。