首页 > 其他分享 >时间区间按月计算使用天数

时间区间按月计算使用天数

时间:2024-07-18 17:07:58浏览次数:6  
标签:end 天数 id month start 计算 区间 day select

select 
     t3.*
    ,case
        when day_start > month_current and day_end < month_last then TIMESTAMPDIFF(DAY,day_start,day_end) + 1 -- '中间,结束时间 - 开始时间'
        when day_start > month_current then TIMESTAMPDIFF(DAY,day_start,month_last) + 1 -- '开头,当月最后一天 - 开始时间'
        when day_end < month_last      then TIMESTAMPDIFF(DAY,month_current,day_end) + 1 -- '结尾,结束时间 - 当月第一天'
        else day(month_last)  -- '全部,算全月'
    end as day_cnt -- 当月占用时间
    ,case
        when day_start > month_current and day_end < month_last then '中间,结束时间 - 开始时间'
        when day_start > month_current                          then '开头,开始时间 至 当月最后一天'
        when day_end < month_last                               then '结尾,当月第一天 至 结束时间'
        else '全部,算全月'
    end as day_cnt_flag -- 当月占用时间
from (
    select
         id
        ,t2.month                                             as month_current
        ,date_add(t2.month, interval - day(t2.month) + 1 day) as month_first
        ,LAST_DAY(t2.month)                                   as month_last
        ,t1.day_start
        ,t1.day_end
    from (
        select 
             t0.*
            ,date_add(t0.day_start, interval - day(t0.day_start) + 1 day) as day_start_first
            ,LAST_DAY(t0.day_end)                                         as day_end_last
        from (
            select 1 as id,'2024-01-01' as day_start,'2025-12-31' as day_end union all
            select 2 as id,'2023-03-11' as day_start,'2025-12-20' as day_end union all
            select 3 as id,'2024-12-02' as day_start,'2025-12-10' as day_end union all
            select 4 as id,'2024-12-03' as day_start,'2024-12-03' as day_end union all
            select 5 as id,'2024-08-17' as day_start,'2024-08-27' as day_end 
        ) t0
    ) t1
    left join (
        select 
             date_add('2022-01-01',interval row_number() over(order by ld_src_id) month) as month
            ,row_number() over(order by ld_src_id) as rn
        from dwd_cyjg_bt_progress_report_data
        limit 100
    ) t2
        on t2.month >= t1.day_start_first   and t2.month <= t1.day_end_last
) t3
order by id,month_current

标签:end,天数,id,month,start,计算,区间,day,select
From: https://www.cnblogs.com/chenzechao/p/18310012

相关文章

  • 隐马尔可夫模型之概率计算问题
    前向算法    算法目标:计算给定隐马尔可夫模型和观测序列的概率。    算法步骤:通过递归计算前向概率来实现,其中表示在时刻状态为并且观测到部分序列的概率。初始化在初始时刻,计算所有状态的初始前向概率:,其中,是初始状态概率,是状态生成观测的概率。递归计......
  • 第一章-化学计算基础总结
    字母:\(n:\)物质的量(单位:摩尔\(mol\))\(N:\)微粒数\(N_A:\)阿伏伽德罗常数\(m:\)质量(单位:克\(g\))\(M:\)摩尔质量(单位:克/摩尔\(g/mol\))\(p:\)压强(单位:帕\(Pa\))\(V:\)体积(单位:立方米\(m^3\))\(T:\)温度(单位:开尔文\(K\))\(R:\)气体常数\(x:\)物质的量分数\(c:......
  • 【学术会议征稿】第六届信息与计算机前沿技术国际学术会议(ICFTIC 2024)
    第六届信息与计算机前沿技术国际学术会议(ICFTIC2024)20246th InternationalConferenceonFrontierTechnologiesofInformationandComputer   第六届信息与计算机前沿技术国际学术会议(ICFTIC2024)将在中国青岛举行,会期是2024年11月8-10日,为期三天,本次会议是......
  • 支持多路多算法实时监控与AI计算的智慧能源开源了。
    简介AI视频监控平台,是一款功能强大且简单易用的实时算法视频监控系统。愿景在最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,减少企业级应用约95%的开发成本,用户仅需在界面上简单操作,即可实现全视频的接入及布控。  v:159......
  • 基于SpringBoot的宠物领养系统-07863(免费领源码+开发文档)可做计算机毕业设计JAVA、PHP
    摘 要21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存储达到准确、快速、完善,并能提高工作管理效率,促进其发展。论文主要是对宠物领养系统......
  • 基于计算机学院校友网的设计与实现【源码+文档+PPT】
    精彩专栏推荐订阅:在下方专栏......
  • springboot博客交流平台-计算机毕业设计源码56406
    摘要博客交流平台作为一种重要的网络平台,为用户提供了展示自我、分享经验和与他人互动的空间。在国内外,研究者们关注博客交流平台的各个方面,并取得了显著的进展。研究内容主要包括用户体验和界面设计、社交化和互动性、多媒体内容支持、移动设备适配和跨平台体验、数据分析......
  • 计算机网络-IGMPv3的工作原理
    一、SSM模型带来的挑战出于安全考虑,组播组成员可以只选择接收从特定组播源发来的组播数据。组成员需要告知组播网络,接收来自哪些特定组播源的组播流量。IGMPv1与IGMPv2的报文中均无法携带组播源的信息,因此无法配合SSM使用(可使用SSMMapping功能解决这个问题)。回顾我们......
  • Golang的KisFlow流式计算框架概述
    1.1为什么需要KisFlow一些大型toB企业级的项目,需要大量的业务数据,多数的数据需要流式实时计算的能力,但是很多公司还不足以承担一个数仓类似,Flink+Hadoop/HBase等等。但是业务数据的实时计算需求依然存在,所以大多数的企业依然会让业务工程师来消化这些业务数据计算的工作......
  • 内存、存储中(计算机、MCU)的引导流程、存储器
    内存、存储中(计算机、MCU)的引导流程、存储器一、内存栈区(stack):存放非静态局部变量堆区(heap):存放malloc()、calloc()、realloc()、free()等函数动态分配的数据 ——malloc()-C语言标准库中的函数全局静态区:存放静态局部变量、全局变量代码区:存放程序代码栈......