我正在嘗試提取日期范圍大于 07/01/2019 和 2 年前同月和同周的 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
uj5u.com熱心網友回復:
看起來您需要類似以下條件的東西
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,并且實際列值沒有函式。這意味著可以有效地使用索引。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/346131.html
標籤:sql sql-server 查询语句
上一篇:回傳每個月的最新值填充空值
下一篇:什么是行內函式?[復制]
