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

Cre*_*ent 0 sql t-sql sql-server-2012

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

datepart(yyyy,StartDt = 2017) OR datepart(yyyy,EndDt = 2017)
Run Code Online (Sandbox Code Playgroud)

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

Bec*_*uzz 5

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

WHERE CampaignStartDate < '2018-01-01'
AND CampaignEndDate >= '2017-01-01'
Run Code Online (Sandbox Code Playgroud)

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