SQL:上次出现的年份?

时间:2018-12-15 17:37:00

标签: mysql sql

我如何才能找到上一次发生的日期和年份组合。 因此,我有很长的日期列表,并且需要输出最近发生的年份。

例如, 假设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

2 个答案:

答案 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;