「已注销」 2022-03-21 10:56 采纳率: 91.7%
浏览 60
已结题

sqlserver 周报问题 ,想获取这个月内所有的周报,求解决

sql server 想获取每个月的各个周报 ,周报时间是周三到下周三 本月第一天不是周三的话第一周就是本月第一天到第一个周三 本月最后一天不是周三的话就本月最后一个周三到本月最后一天为最后一个周报 这个有人会吗?求支援

  • 写回答

1条回答 默认 最新

  • DarkAthena ORACLE应用及数据库设计方案咨询师 2022-03-21 16:09
    关注

    其实你这个就是想按周来切分一个月份,可以使用datepart函数,
    但由于这个函数是按星期日为一周的第一天,因此需要将你当前日期减去3天再来使用这个函数,
    最后再用这个函数的值和月份结合,来识别区间段就好了

     select cast( datepart(week,(DATEADD(d,-3,日期字段))) as VARCHAR)+'-'+ cast(month(日期字段) as VARCHAR)
    

    如果要写成查询条件的话

     where cast( datepart(week,(DATEADD(d,-3,日期字段))) as VARCHAR)+'-'+ cast(month(日期字段) as VARCHAR)=
    cast( datepart(week,(DATEADD(d,-3,当前日期))) as VARCHAR)+'-'+ cast(month(当前日期) as VARCHAR)
    

    1. sqlserver的周是按每年断开的,往前推3天会有年初的影响,那么可以往后推4天
      select cast( datepart(week,DATEADD(d,4,'2022-01-04')) as VARCHAR)+'-'+ cast(month('2022-01-04') as VARCHAR)
      
    2. 周日的0点到周三的8点,中间相差24*3+8=80小时,所以 DATEADD(HOUR,-80,日期字段) ,但考虑到上面说的年初的影响,所以再倒过来24*7-80=88小时,即 DATEADD(HOUR,88,日期字段)
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月30日
  • 已采纳回答 3月22日
  • 创建了问题 3月21日

悬赏问题

  • ¥15 基于52单片机的酒精浓度检测系统加继电器和sim800
  • ¥50 我撰写的python爬虫爬不了 要爬的网址有反爬机制
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等