0
votes

Comment devenir précédent - Quartiers prévisibles Mois et année dans SQL Server

  • Si la date est 2020-07-14, Mois de sortie: 3 ans: 2020
    précédent-trimestre précédent est le 1er et le 1er trimestre du mois dernier est 3

  • Si la date est 2020-03-14, Mois de sortie: 9 ans: 2019
    Le trimestre précédent est le 3 et le 3ème trimestre du mois dernier est 9

    Est-ce que cela pour le mois: xxx

    veuillez m'aider avec l'année. J'ai cherché en ligne à travers des fonctions datrodiff et datadd, mais c'est déroutant


1 commentaires

Pas tout à fait sûr de suivre ici. 2020-07-14 Début du trimestre précédent serait 2020-04-01 mais vous avez dit que vous souhaitez que le mois soit le 3. 2020-03-14 a le même problème. Le début du trimestre précédent serait 2019-10-01. Vous voulez peut-être soustraire un mois à partir du début du trimestre précédent?


3 Réponses :


3
votes

Si c'est le dernier jour du trimestre, voici une solution. Cela devrait fonctionner d'avancer et de reculer.

DECLARE @ReportDate DATETIME = '2020-07-14'
DECLARE @QuarterInterval INT = -2

DECLARE @EndOfQuarter DATETIME =(SELECT DATEADD(DAY, -1, DATEADD(QUARTER, DATEDIFF(QUARTER, 0,DATEADD(QUARTER,@QuarterInterval , @ReportDate)) +1, 0)))

SELECT 
    TheDate = @EndOfQuarter,
    TheMonth = DATEPART(MONTH,@EndOfQuarter),
    TheYear = DATEPART(YEAR,@EndOfQuarter)


2 commentaires

Ceci est légèrement plus propre: Sélectionnez Daaddd (QQ, DaturaIff (QQ, 0, 0, @ReportDate) - @quarterInterval, 0)


Il semble que produit le début du trimestre. Sur la base de l'exemple ci-dessus, la fin du trimestre a été demandée -> 3.



1
votes

Je pense que je trouve plus facile d'ajuster la date au premier jour du dernier mois du trimestre en cours puis prenez 6 mois de réduction:

declare @quart int;
declare @month int;
declare @thedate date;
set @thedate = '2020-07-14';
set @quart = DATEPART(quarter, @thedate);
set @month = ((@quart - 1) * 3) + 2
set @thedate = DATEFROMPARTS(@year, @month, 1)
set @thedate = DATEADD(month, @thedate, -6)


0 commentaires

1
votes

Vous pouvez essayer d'essayer: xxx


0 commentaires