如何查询每周最后一个工作日,例如中秋节那周周五9.13放假,这一周的周后一个工作日是9.12

有一张表,这张表去除了不是工作日的日期,SQL语句如何取每周的最后一天

@@.. 发布于 2019-10-8 09:33 (编辑于 2019-10-8 10:24)
1min目标场景问卷 立即参与
回答问题
悬赏:8 F币 4人赏过 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
doudekaixinLv6中级互助
发布于2019-10-8 09:41

你这考虑的情况太少。。。

补班的要不要算?

  • @@.. @@..(提问者) 不算
    2019-10-08 09:42 
  • doudekaixin doudekaixin 回复 @@..(提问者) 不算的话,你直接建张表枚举吧。 几个涉及的节假日最后一天工作日列出来 union select 全是周5的日期,并且星期数不和你枚举出来的日期的星期数相同
    2019-10-08 09:57 
最佳回答
0
凌建Lv7高级互助
发布于2019-10-8 09:47

周末可以另算,倒是没问题,国庆,元旦,劳动节节假日倒是固定的,但是你的中秋节假日的日期不固定啊!

  • @@.. @@..(提问者) 有一张表,这张表去除了不是工作日的日期,SQL语句如何取每周的最后一天
    2019-10-08 10:25 
  • 凌建 凌建 回复 @@..(提问者) where datename(weekday,日期字段名)=\'星期日\' 这是sqlserver的
    2019-10-08 11:31 
  • 凌建 凌建 回复 @@..(提问者) mysql的 where dayname(CURRENT_DATE)=\'Sunday\'
    2019-10-08 11:34 
  • @@.. @@..(提问者) 回复 凌建 表里只有工作日,取得是每周工作日的最后一天,而且这个是oracle
    2019-10-08 11:46 
  • 凌建 凌建 回复 @@..(提问者) 工作日最后一天替换成周五不就好了,原理是一样的啊
    2019-10-08 13:10 
最佳回答
0
hippomenes157Lv3见习互助
发布于2019-10-8 09:52

建个基础数据表吧

最佳回答
0
firegunzxLv6高级互助
发布于2019-10-8 10:00

你这种情况我们之前做过,比较麻烦

首先需要设定一个企业行事历表,把所有假日和工作日都标识清楚。

然后查询日期所在周的最后一天,跟行事历做循环对比判断,如果是工作日就返回改日期,如果是假日就日期-1再次判断。


  • @@.. @@..(提问者) 有一张表,这张表去除了不是工作日的日期,SQL语句如何取每周的最后一天
    2019-10-08 10:25 
  • firegunzx firegunzx 回复 @@..(提问者) select CONVERT(nvarchar(10), DATEADD(wk, DATEDIFF(wk,0,DATEADD(dd, -1, getdate()) ), 6),121)
    2019-10-08 10:28 
  • @@.. @@..(提问者) 回复 firegunzx o这是一个SQL句子吗
    2019-10-08 10:40 
  • firegunzx firegunzx 回复 @@..(提问者) 对,sql不好的话,你这个需求就不好实现了。
    2019-10-08 10:41 
  • @@.. @@..(提问者) 回复 firegunzx 这个SQL不是从表里查询吗
    2019-10-08 10:46 
  • 5关注人数
  • 793浏览人数
  • 最后回答于:2019-10-8 10:24
    请选择关闭问题的原因
    确定 取消
    返回顶部