Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Obtenir les dates de début et de fin des trimestres à partir de l'année

select 
    dateadd(M, 3*number, CONVERT(date, CONVERT(varchar(5),@year)+'-1-1')),
    dateadd(D,-1,dateadd(M, 3*number+3, CONVERT(date, CONVERT(varchar(5),@year)+'-1-1'))),
    Number QuarterNo
from master..spt_values 
where type='p' 
and number between 1 and 4  

Vous voudrez probablement utiliser des dates, pas des dates-heures, sinon rien pendant la journée du dernier jour du trimestre n'est inclus dans votre trimestre (par exemple :2013-06-30 14:15)

Pour aller dans l'autre sens, utilisez datepart

select ((DATEPART(q,@date)+2) % 4)+1