我如何才能找到上一次发生的日期和年份组合。 因此,我有很长的日期列表,并且需要输出最近发生的年份。
例如, 假设2018年12月31日没有发生,所以我想将2017年12月31日作为输出?
Table:
Dates
01/03/2013
01/09/2012
01/03/2013
01/06/2011
03/03/2009
11/07/2011
01/03/2023
01/05/2021
Output:
01/03/2018
01/09/2018
01/03/2018
01/06/2018
03/03/2018
11/07/2018
01/03/2017
01/05/2017
答案 0 :(得分:1)
结合使用T-SQL ISDATE
函数(docs here)和蛮力方法怎么样?
简而言之: 从当前年份(降序)开始,循环搜索年份,并询问日期(与当前迭代年份结合)是否为有效日期?如果不是,请继续操作(减小年份值)。
答案 1 :(得分:1)
这将帮助您:
select t2.*,
(case when month(col) < month(current_date) or
(month(col) < month(current_date) and day(col) <= day(current_date))
then year(current_date)
else 1 + year(current_date)
end)
from table2 t2;