132 votes

Comment obtenir la première et la dernière date de l'année en cours

Utiliser SQL Server 2000

Comment obtenir la première et la dernière date de l'année en cours

Ouput attendu

01/01/2012 et 31/12/2012

Comment obtenir cette date.

Besoin d'aide SQL Query

274voto

Jamie F Points 10832
SELECT
   DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) AS StartOfYear,
   DATEADD(yy, DATEDIFF(yy,0,getdate()) + 1, -1) AS EndOfYear

Plus tard Depuis cela a obtenu autant de points de vue, je pense qu'il est important de souligner que la requête ci-dessus donne une valeur de type datetime de minuit au début du 31 décembre. C'est environ 24 heures en deçà de la dernière moment de l'année. Si vous souhaitez inclure le temps peut se produire sur les 31 décembre, alors je vous recommande vraiment le comparer à la première de l'année prochaine, avec un < comparaison. Ou vous pouvez comparer à la dernière quelques millisecondes de l'année en cours, mais il reste toujours un écart si vous utilisez autre chose que DATETIME (comme DATETIME2):

SELECT
   DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) AS StartOfYear,
   DATEADD(yy, DATEDIFF(yy,0,getdate()) + 1, -1) AS LastDayOfYear,
   DATEADD(yy, DATEDIFF(yy,0,getdate()) + 1, 0) AS FirstOfNextYear,
   DATEADD(ms, -3, DATEADD(yy, DATEDIFF(yy,0,getdate()) + 1, 0)) AS LastTimeOfYear

13voto

Vikdor Points 15049

Vous pouvez obtenir l’année en cours à l’aide de la fonction DATEPART , à partir de la date actuelle obtenue à l’aide de getUTCDate()

 SELECT 
    '01/01/' + CONVERT(VARCHAR(4), DATEPART(yy, getUTCDate())), 
    '31/12/' + CONVERT(VARCHAR(4), DATEPART(yy, getUTCDate()))
 

4voto

Rahul Tripathi Points 1

Chaque année a le 1 er comme première date et le 31 comme dernière date, ce que vous devez faire est de ne joindre que l'année à ce jour et au mois par exemple: -

  SELECT '01/01/'+cast(year(getdate()) as varchar(4)) as [First Day],
 '12/31/'+cast(year(getdate()) as varchar(4)) as [Last Day]
 

0voto

NeverHopeless Points 3962

Découvrez celui-ci:

 select convert(varchar(12),(DateAdd(month,(Month(getdate())-1) * -1, DateAdd(Day,(Day(getdate())-1) * -1,getdate()))),103) as StartYear,
       convert(varchar(12),DateAdd(month,12 - Month(getdate()), DateAdd(Day,(31 - Day(getdate())),getdate())),103) as EndYear
 

-1voto

R-Dubz Points 1
select to_date(substr(sysdate,1, 4) || '01/01'), to_date(substr(sysdate,1, 4) || '12/31') 
from dual

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X