sql问题

oracle怎么用sql求出每个月最后一个工作日

FineReport 许zhe 发布于 2019-4-11 14:23
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
1
魏先鹏Lv7中级互助
发布于2019-4-11 14:49

SELECT CASE WHEN DATEPART(DW,(dateadd(month,1+datediff(month,0,GETDATE()),0)-1))=7 THEN (dateadd(month,1+datediff(month,0,GETDATE()),0)-1)-1

 WHEN DATEPART(DW,(dateadd(month,1+datediff(month,0,GETDATE()),0)-1))=1 THEN (dateadd(month,1+datediff(month,0,GETDATE()),0)-1)-2  

 ELSE dateadd(month,1+datediff(month,0,GETDATE()),0)-1 END A


这个可以求当前所在月的最后一个工作日,看你需求,看看能不能变一下行


最佳回答
0
TyrionLv3见习互助
发布于2019-4-11 15:18

获取当月的最后一天sql如下:

select last_day(sysdate) from dual;


计算上个月的最后一天

select last_day(add_months(sysdate,-1)) from dual;


计算下个月的最后一天

select last_day(add_months(sysdate,1)) from dual;


最佳回答
0
黄源Lv6中级互助
发布于2019-4-11 15:57

 select distinct case to_char(last_day(everyDay),'dy') when '星期六' then last_day(everyDay)-1

 when '星期日' then last_day(everyDay)-2 else last_day(everyDay) end 日期

  from (select to_date('2015-01-01','yyyy-mm-dd') + level - 1 as everyDay from dual

  connect by level <= 365*10)

2015年到之后10年,要其他时间自己修改参数

  • 4关注人数
  • 548浏览人数
  • 最后回答于:2019-4-11 15:57
    请选择关闭问题的原因
    确定 取消
    返回顶部