返回2年前同月前一周的数据和日期范围



我试图提取2年前的数据,日期范围大于07/01/2019和2年前同月同周。需要日期转换的建议

select 
tilr.BusinessUnitID
,emph.employeeID
,convert(varchar(10), cast(cast(tilr.date_key as varchar(10)) as date), 101) as ConvertDate
,tilr.paidhr as 'Paid hr'
from [dbo].[location] tilr
inner join [dbo].[Employee] emph
on emph.employeeID = tilr.employeeID
and emph.businessunitid = tilr.BusinessUnitID
and emph.date_key = tilr.date_key
where 

tilr.date_key >= 20190701
and datename(year, convert(varchar(10), cast(cast(tilr.date_key as varchar(10))as date), 101)) 
< DateAdd(YY, -2, GETDATE())

尝试获取日期范围>= 07/01/2019和<10/23/2019(两年前同月+/-日)作比较。有了上面的查询,我得到的数据直到12/2019年底,而不是10/2019。

示例数据
BusinessUnitID employeeID  ConvertDate Paid hr  
1234             1          07/01/2019   1.4
2345             2          10/25/2019   3.5

看起来您需要以下条件

tilr.date_key >= DATEADD(month, -2, DATEFROMPARTS( YEAR(GETDATE()) - 2, MONTH(GETDATE()), 1 )) AND
tilr.date_key <  DATEADD(month, 1, DATEFROMPARTS( YEAR(GETDATE()) - 2, MONTH(GETDATE()), 1 ))

请注意,计算只使用日期函数,而不是与varchar之间的转换,并且没有针对实际列值的函数。这意味着可以有效地使用索引。

相关内容

  • 没有找到相关文章

最新更新