tSQL Server我们如何编写一个sql函数来返回getdate()位于FromDate和Todate之间的记录



我们如何编写一个sql函数来返回getdate((位于FromDate和Todate之间的记录,如下

if getdate() exists between FromDate and Todate then return 
elseif DateAdd(Year, -1, getdate()) is between FromDate and Todate.
elseif DateAdd(Year, -2, getdate()) is between FromDate and Todate.

神话

ProductID FromDate Todate  
A   1/2/2022  1/2/2023
A   1/2/2021  1/2/2022
A   1/2/2020  1/2/2021
A   1/2/2019  1/2/2020
B   1/2/2020  1/2/2021
B   1/2/2019  1/2/2020
C   1/2/2019  1/2/2020
C   1/2/2018  1/2/2019

假设getdate((是2022年10月1日,结果应该如下

ProductID FromDate Todate  Active
A   1/2/2021  1/2/2022
B   1/2/2020  1/2/2021
C   1/2/2019  1/2/2020

我相信你的意思是"如果今天的日期、一年前或两年前的日期介于开始日期和结束日期之间,我如何返回此表中的记录">

在这种情况下,你很接近,但这应该有效:

WITH dates
AS
(
SELECT DATEADD(Year,i,CAST(GETDATE() AS Date)) AS datecheck
FROM (VALUES (0),(-1),(-2)) t(i)
)
SELECT ProductID, FromDate, ToDate
FROM Mytable, dates
WHERE datecheck BETWEEN FromDate AND ToDate;

相关内容

最新更新