我试图将返回的数据限制为仅在当月具有开始和结束日期的那些点 - 活动项目。它的行为有问题,因为今天是本月的最后一天。我相信明天也会有问题(样本中没有 6 月份的数据)。
这是我的数据集(表 1):
Project User Effort Start_Date End_Date
------- ------- ------ -------- --------
Traffic Control DOMAIN\john.smith 0.1 5/1/2013 5/31/2013
Turboencabulator Analysis DOMAIN\mark.webber 0 5/1/2013 5/31/2013
Widget Calibration DOMAIN\mark.webber 0 5/1/2013 5/31/2013
Gizmo Creation DOMAIN\steve.green 0.1 5/1/2013 5/31/2013
Advanced Toolmaking DOMAIN\steve.green 0.6 5/1/2013 5/31/2013
Diesel Engine Diagnostics DOMAIN\steve.green 0.05 5/1/2013 5/31/2013
Cold Fusion Reactor Creation DOMAIN\steve.green 0.3 5/1/2013 5/31/2013
今天使用以下查询时,我没有得到任何返回结果:
SELECT * FROM dbo.table1
WHERE Start_Date <= (getdate()) AND End_Date >= (getdate())
ORDER BY User, Start_Date
昨天它恢复得很好。我也有 6 月的数据(未显示在我的示例中),但我需要修改我的语句,以便它能够在整个月内可靠地返回当前月份的数据。
答案 - 正确的 WHERE 语句(来自下面答案中的评论):
WHERE (Month(Start_Date) <= Month((getdate())) AND Month(End_Date) >= Month((getdate()))) AND (YEAR(Start_Date) <= YEAR((getdate())) AND YEAR(End_Date) >= YEAR((getdate())))