Série d'instructions SQL (la date de début et la date de fin de chaque trimestre) [Chapitre 22 des huit cents chapitres]

Préface

Fondamentalement, le financement statistique sera utilisé.

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

Résolution:

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

Obtenez le premier jour de la nouvelle année, qui est le 1er janvier. Générez ensuite 4 lignes.

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

L'ajout de 3 mois, 6 mois, 9 mois et 12 mois le 1er janvier
correspond au lendemain de chaque trimestre. Par exemple, si le 1er janvier est augmenté de 3 mois, le 1er avril, Ensuite, c'est le lendemain du 31 mars du premier trimestre.
Jusqu'à présent, je pense qu'il n'est pas nécessaire d'expliquer plus tard.

serveur SQL

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

Le principe est le même que ci-dessus.

Je suppose que tu aimes

Origine www.cnblogs.com/aoximin/p/12679275.html
conseillé
Classement