SQL日期范围查询异常求助:2021年全年数据仅返回部分时段
问题说明
需要从数据库提取2021年1月1日至12月31日的信息,要求每周首日为周一(而非默认周日),但当前SQL查询仅返回2021年1月7日至9月16日的数据。我搞不懂DATEADD、DATEDIFF函数的工作逻辑,希望得到帮助。
当前使用的SQL语句
SELECT a.ModifiedOn AS Week, COUNT(a.ActivityId) AS Count FROM ActivityPointer AS a WHERE a.ModifiedOn >= DATEADD(week, DATEDIFF(week, -1,DATEADD(week, 0, '2021')), 0) AND a.ModifiedOn <= DATEADD(week, DATEDIFF(week, -5,DATEADD(week,43, '2021')), -1) AND a.ActivityTypeCode IN ('4201','4210','4212') AND a.OwnerId IN('3C696B18-BFF4-E911-A68A-005056A18C45', 'DDD1597F-4FCD-E411-80D3-0050568973A1', '0AD3654A-7517-E011-B418-00505689002A', '98FA2C51-A296-EB11-A6AD-005056A18C45', '56C940A2-B396-EB11-A6AD-005056A18C45', '379C0CE5-D3D2-E911-8105-02BF0A0AC819') GROUP BY a.OwnerId,a.OwneridName,a.ModifiedOn ORDER BY ModifiedOn desc
核心疑问点
我最困惑的是以下WHERE条件中的日期计算逻辑:
a.ModifiedOn >= DATEADD(week, DATEDIFF(week, -1,DATEADD(week, 0, '2021')), 0) AND a.ModifiedOn <= DATEADD(week, DATEDIFF(week, -5,DATEADD(week,43, '2021')), -1)
内容的提问来源于stack exchange,提问作者qwatro_
相关产品推荐
相关产品推荐

