去年发生的日期和月份

时间:2018-07-19 11:32:37

标签: sql sql-server

我正在寻找一种找到日期和年份组合发生的最后时间的方法。

我有很长的日期列表,我想找出日期和月份最后一次出现在哪一年。

即。 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)

2 个答案:

答案 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替换为函数逻辑。