zoukankan      html  css  js  c++  java
  • sql 语句系列(每个季度的开始日期和结束日期)[八百章之第二十二章]

    前言

    基本上统计财务一定会用到。

    mysql

    select QUARTER(ADDDATE(y.dy,-1)) QTR,
           DATE_ADD(y.dy,INTERVAL -3 MONTH) Q_start,
           ADDDATE(y.dy,-1) Q_end
    from(
    select DATE_ADD(x.dy,INTERVAL (3*x.id) MONTH) dy
    FROM(
    select id,ADDDATE(CURRENT_DATE,-DAYOFYEAR(CURRENT_DATE)+1) dy
    from T100
    where id<=4
    ) x
    ) y
    

    解析:

    select id,ADDDATE(CURRENT_DATE,-DAYOFYEAR(CURRENT_DATE)+1) dy
    from T100
    where id<=4
    

    得到新年第一天,也就是1月1号。然后生成4行。

    select DATE_ADD(x.dy,INTERVAL (3*x.id) MONTH) dy
    

    分别在1月1号增加 3个月,6个月,9个月,12个月
    得到的就是每一个季度后的一天,比如说1月1号增加3个月,那么就是4月1号,那么就是第一季度3月31后的一天。
    至此相信后面就不用解释了。

    sql server

    with x(dy,cnt)
    as(
     select DATEADD(d,-(datepart(dy,getdate())-1),getdate()),1
     union all
     select DATEADD(m,3,dy),cnt+1
     from x
     where cnt+1<=4
    )
    
    select DATEPART(q,dateadd(d,-1,dy)) QTR,
           DATEADD(m,-3,dy) Q_Start,
    	   DATEADD(d,-1,dy) Q_End
    from x
    order by 1
    

    原理和上文一致。

  • 相关阅读:
    二柱子四则运算程序
    测绘软件使用感受
    二分图的最大匹配、完美匹配和匈牙利算法(转载)
    serialVersionUID的用处(转载)
    RMQ(模板)
    codeforces 825E
    红黑树
    SQL 范式(转载)
    java 移位运算
    [Hnoi2010]Bounce 弹飞绵羊
  • 原文地址:https://www.cnblogs.com/aoximin/p/12679275.html
Copyright © 2011-2022 走看看