Categorias

Converter data Juliana para data Gregoriana e vice e versa

Com este código é possível realizar a conversão de data no formato Gregoriana em data no formato Juliana e vice e versa.

CREATE FUNCTION dbo.RetornaDataJuliana(@Dia Int, @Mes Int, @Ano Int)  
RETURNS INT
/*Retorna Data Juliana*/
AS  

BEGIN 
	DECLARE @dtJuliana int
	SELECT @dtJuliana = (@Ano - 1) * 365 - @Ano/100 + @Ano/400 + (@Ano - 1 ) / 4 

		IF @Mes > 2 AND ( ( @Ano%100 <> 0 AND @Ano%4 = 0 ) OR @Ano%400 = 0 ) 
			SELECT @dtJuliana = @dtJuliana + 1 
			SELECT @dtJuliana = @dtJuliana + 31 * ( @Mes - 1 ) + @Dia

		IF ( @Mes > 2 ) 
			SELECT @dtJuliana = @dtJuliana - 3 
		IF ( @Mes > 4 )  
			SELECT @dtJuliana = @dtJuliana -  1       
		IF ( @Mes > 6 ) 
			SELECT @dtJuliana = @dtJuliana - 1 
		IF ( @Mes > 9 ) 
			SELECT @dtJuliana = @dtJuliana - 1 
		IF ( @Mes > 11 ) 
			SELECT @dtJuliana = @dtJuliana - 1 

	RETURN @dtJuliana
END



CREATE FUNCTION dbo.retornaDataGregoriana(@DataJuliana int)  
RETURNS datetime 
/*Retorna data Gregoriana a partir de data Juliana*/
AS  

BEGIN 
	RETURN(DATEADD(DAY,@DataJuliana - 722815, '1/1/80')) 
END