Sql 上一年发生的日期和月份
我正在寻找一种方法,找到最后一次发生日与年组合的时间Sql 上一年发生的日期和月份,sql,sql-server,Sql,Sql Server,我正在寻找一种方法,找到最后一次发生日与年组合的时间 我有一个很长的日期列表,我想知道日期和月份最后发生在哪一年 ie.01/01发生在2018年,因此我希望2018年作为输出 2018年还没有发生31/12事件,最后一次发生是在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)
我有一个很长的日期列表,我想知道日期和月份最后发生在哪一年 ie.01/01发生在2018年,因此我希望2018年作为输出 2018年还没有发生31/12事件,最后一次发生是在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)
这是你想要的吗
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;
选择t2.*,
(如果月份(col)<月份(当前日期)或
(month(col)
SELECT *
FROM YourTable
WHERE month(date) = month(get_some_date()) and year(date) = year(get_somedate())
在这里,您可以替换函数逻辑中的日期。用您正在使用的数据库标记您的问题。@ZMannion您正在寻找日和月的组合吗?为什么2018年1月1日重新修复了?它不在表1中-我不明白您要检查什么。我有一个很长的日期列表,我想知道日期是哪一年ate和月份最后一次出现。即01/01发生在2018年,因此我希望2018年作为输出。31/12尚未发生在2018年,最后一次发生在2017年,因此我希望2017年作为输出。选择t2.*(当月份(col)<月份(当前_日期)或(月份(col)<月份(当前_日期)和日期(col)时的情况)@ZMannion…这返回问题所说的应该返回的内容。