SQL 服务器 我们如何编写一个 sql 函数,其中 returns getdate() 在 FromDate 和 Todate 之间的记录
SQL Server How can we write a sql function which returns the records where getdate() is between FromDate and Todate
我们如何编写一个 sql 函数,其中 returns 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() 是 1/10/2022 结果应该如下
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
我相信你的意思是“我如何 return 从这个 table 记录其中今天、一年前或两年前的日期介于开始日期和结束日期之间?”
在这种情况下,你很接近,但这应该有效:
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;
我们如何编写一个 sql 函数,其中 returns 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() 是 1/10/2022 结果应该如下
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
我相信你的意思是“我如何 return 从这个 table 记录其中今天、一年前或两年前的日期介于开始日期和结束日期之间?”
在这种情况下,你很接近,但这应该有效:
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;