如何找到上个月的最后一个“工作”天?

时间:2018-06-27 17:30:08

标签: sql postgresql date

是否可以找到上个月的最后一个工作日?我知道我可以使用SELECT (date_trunc('month', now())::date - 1)来获取上个月的最后一天,但是如何获取最后的“工作日”?

2 个答案:

答案 0 :(得分:2)

我相信这可以满足您的需求

df_incomplete <- structure(list(Team = c("NSH", "NSH", "NSH", "NSH", "NSH", "NSH", 
"NSH"), PTS = c(88L, 88L, 88L, 104L, 96L, 94L, 117L), W = c(38L, 
38L, 38L, 47L, 41L, 41L, 53L), GF = c(214L, 214L, 214L, 226L, 
224L, 238L, 261L), GA = c(233L, 233L, 233L, 202L, 213L, 220L, 
204L), S = c(2382L, 2382L, 2382L, 2614L, 2507L, 2557L, 2641L), 
    SA = c(2365L, 2365L, 2365L, 2304L, 2231L, 2458L, 2650L), 
    Year = c(2011L, 2012L, 2014L, 2015L, 2016L, 2017L, 2018L)), .Names = c("Team", 
"PTS", "W", "GF", "GA", "S", "SA", "Year"), class = "data.frame", row.names = c(NA, 
-7L))

此类请求通常暗示需要日历表。

答案 1 :(得分:0)

小猪不支持戈登的答案,我想这就是你想要的:

SELECT (
    date_trunc('month', current_date) - interval '1 day' -
    (case extract(dow from date_trunc('month', current_date) - interval '1 day')
         when 0 then 2
         when 6 then 1
         else 0
      end) * interval '1 day'
)::date as last_weekday_in_last_month;

假设您的周末为0(星期日)和6(星期六)。它使用OP的原始逻辑来查找上个月的最后日期,然后如果最后一个日期是0或6,则使用Gordon的CASE逻辑减去更多天。