我正在寻找一种找到日期和年份组合发生的最后时间的方法。
我有很长的日期列表,我想找出日期和月份最后一次出现在哪一年。
即。 01/01发生在2018年,所以我想要2018年作为输出。
31/12尚未在2018年发生,上一次发生在2017年,所以我希望2017年为输出。
表1
(01/01/2015),
(01/01/2016),
(31/12/2015),
(25/07/2004)
返回表2
(01/01/2015, 01/01/2018),
(01/01/2016, 01/01/2018),
(31/12/2015, 31/12/2017),
(25/07/2004, 25/07/2017)
或者甚至返回
(01/01/2015, 2018),
(01/01/2016, 2018),
(31/12/2015, 2017),
(25/07/2004, 2017)
答案 0 :(得分: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;
这使用了一组合理的日期/时间函数。这些可能因数据库而异。
答案 1 :(得分:1)
要将给定日期的月份和年份过滤为当前日期,可以使用:
SELECT *
FROM YourTable
WHERE month(date) = month(get_some_date()) and year(date) = year(get_somedate())
在这里您可以将get_some_date
替换为函数逻辑。