La Web del Programador: Comunidad de Programadores
https://www.lawebdelprogramador.com/foros/SQL/534939-Fehas-Juliana-a-Gregoriana.html

Fehas Juliana a Gregoriana

Fehas Juliana a Gregoriana

Publicado por p@blo (29 intervenciones) el 17/08/2005 18:04:19
Como convierto en SQL2000 una fecha en Juliana a Gregoriana, la fecha Juliana esta con el siguiente formato:

105229 que es 17/08/2005

Gracias y Sldos.

P@blo
sin imagen de perfil

RE:Fehas Juliana a Gregoriana

Publicado por Liliana (426 intervenciones) el 19/08/2005 18:18:58
Hola Pablo,
A ver si con una corrección que le hice a las consultas ahora va bien:

-- DE GREGORIANO A JULIANO
declare @DiasJuliano int, @Gregoriano datetime, @SinDias datetime
select @Gregoriano = '20050817'
select @SinDias = str(year(@Gregoriano))
select @DiasJuliano = datediff(d, @SinDias, @Gregoriano)
select Gregoriano = @Gregoriano, Juliano = ((year(@Gregoriano) - 1900) * 1000) + @DiasJuliano + 1
go

-- DE JULIANO A GREGORIANO
declare @Juliano int, @Año int, @DiasEnAño int, @Gregoriano datetime
select @Juliano = 105229
select @Año = (@Juliano / 1000) + 1900
select @DiasEnAño = @Juliano - ((@Juliano / 1000) * 1000)
select @Gregoriano = convert(datetime, str(@Año) + '0101')
select @Gregoriano = DateAdd (d, @DiasenAño, @Gregoriano)
select Juliano = @Juliano, Gregoriano = @Gregoriano - 1

Por supuesto puede hacerse en una sola línea, lo hice así a propósito para ir viendo la transformación de los datos.
Saludos,
Liliana.

RE:Fehas Juliana a Gregoriana

Publicado por Pablo (29 intervenciones) el 19/08/2005 20:02:34
Hola Liliana,
Funciona perfecto, esto es para un solo registro y para que lo haga con todos los registros de una tabla como seria?

Muchas Gracias y Sldos.

Pablo

sin imagen de perfil

RE:Fehas Juliana a Gregoriana

Publicado por Liliana (426 intervenciones) el 19/08/2005 21:22:36
Suponiendo que tengas una tabla con la columna "Juliano", entonces:

SELECT Juliano,
Gregoriano = DateAdd (d, Juliano - ((Juliano / 1000) * 1000), convert(datetime, str((Juliano / 1000) + 1900 ) + '0101')) - 1
FROM tabla

Liliana.

RE:Fehas Juliana a Gregoriana

Publicado por Pablo (29 intervenciones) el 19/08/2005 22:18:56
Liliana,
Hay algo que falta porque fijate que si en el supuesto campo juliano tengo:
105194 me da 2004/12/31 y deberia ser 2005/07/13 como me da en la consulta que me mandaste primero.
Tambien me da siempre 31/12 y lo unico que cambia es el año.

Bueno, espero tu respuesta y muchas gracias.

Pablo

sin imagen de perfil

RE:Fehas Juliana a Gregoriana

Publicado por Liliana (426 intervenciones) el 22/08/2005 14:40:02
Pablo,
Fijate, copiá y pegá esto en el QA, me da la fecha que corresponde:

declare @Juliano int
select @Juliano = 105194
SELECT @Juliano,
Gregoriano = DateAdd (d, @Juliano - ((@Juliano / 1000) * 1000), convert(datetime, str((@Juliano / 1000) + 1900 ) + '0101')) - 1

Resultado:
Gregoriano
----------- ------------------------------------------------------
105194 2005-07-13 00:00:00.000

RE:Fehas Juliana a Gregoriana

Publicado por p@BLO (29 intervenciones) el 22/08/2005 15:08:16
Buen día Liliana,

Asi funciona bien pero necesito que lo haga para toda la tabla, entonces al poner por ejemplo:

SELECT ICDICJ,
Gregoriano = DateAdd (d, icdicj - ((icdicj / 1000) * 1000), convert(datetime, str((icdicj / 1000) + 1900 ) + '0101')) - 1
FROM PRODDTA.F0011

Donde el campo ICDICJ es el juliano, es que pasa lo que te comente en el correo anterior, quizas deberia utilizar un cursor pero no se como hacerlo.

Desde ya muchas gracias.

Sldos.

P@blo
sin imagen de perfil

RE:Fehas Juliana a Gregoriana

Publicado por Liliana (426 intervenciones) el 22/08/2005 15:19:06
Pablo,
Hago la prueba con una tabla que tiene solo la fecha en juliano.
Te lo copio.

Revisá por favor el contenido de tu dato ¿puede ser que haya algún problema en eso? la conversión me da bien con lo que yo pruebo.

create table #f0011 (ICDICJ int)
insert #f0011 select 105190
insert #f0011 select 105191
insert #f0011 select 105192
insert #f0011 select 105193
insert #f0011 select 105194
insert #f0011 select 105195
insert #f0011 select 105196
insert #f0011 select 105197
insert #f0011 select 105198
insert #f0011 select 105199
insert #f0011 select 105200
insert #f0011 select 105201
insert #f0011 select 105202
insert #f0011 select 105203
insert #f0011 select 105204
insert #f0011 select 105205
insert #f0011 select 105206
insert #f0011 select 105207
insert #f0011 select 105208
insert #f0011 select 105209

SELECT ICDICJ,
Gregoriano = DateAdd (d, icdicj - ((icdicj / 1000) * 1000), convert(datetime, str((icdicj / 1000) + 1900 ) + '0101')) - 1
FROM #f0011

RE:Fehas Juliana a Gregoriana

Publicado por P@blo (29 intervenciones) el 22/08/2005 16:12:36
Liliana,

Es como decis vos, el tema es que el campo de la tabla que estoy consultando no es de tipo int sino que es numeric, como puedo convertirlo.

Muchas gracias y sldos.

P@blo

RE:Fehas Juliana a Gregoriana

Publicado por P@blo (29 intervenciones) el 22/08/2005 16:33:01
Liliana,

Ya funciona, utilice la funcion cast para convertir el campo de numeric a int.

SELECT ICDICJ,
Gregoriano = DateAdd (d, cast(ICDICJ as int) - ((cast(ICDICJ as int) / 1000) * 1000), convert(datetime, str((cast(ICDICJ as int) / 1000) + 1900 ) + '0101')) - 1
FROM PRODDTA.F0011

Muchas gracias, de nuevo.

Sldos.

P@blo

RE:Fehas Juliana a Gregoriana

Publicado por ariel (1 intervención) el 06/11/2007 13:34:04
Liliana sos grosa me estaba volviendo loco y encontre esto!
Gracias yo tambien!!!

RE:Fehas Juliana a Gregoriana

Publicado por Daniel (1 intervención) el 15/01/2013 16:57:23
Estimados,

Una pregunta relacionada al tema; Que otra función puedo usar en lugar de DATETIME, lo que pasa es que requiero que me convierta de juliano a gregoriano simple, es decir sin la hora, solo la fecha.
De antemano gracias y saludos !!
Imágen de perfil de Gerardo

RE:Fehas Juliana a Gregoriana

Publicado por Gerardo (7 intervenciones) el 08/05/2014 03:42:25
SE QUE ESTO NO DEBE IR AQUI PERO IGUAL LO HAGO XD
COMO SERIA ESTO PERO EN VBA , YA QUE TENGO EL MISMO DATO EJEMPLO 114032 DEBERIA DAR COMO RESULTADO 1 DE FEBRERO DEL 2014 , PERO TENGO ENTENDIDO QUE EN VBA ESA FECHA SERIA #02/01/2014# MM/DD/AAAA MES DIA AÑO, LO QUE QUIERO ES QUE SI ME DAN ESA FECHA EL VALOR RESULTANTE SEA 1 DE FEBRERO DE 2014,

POSDATA, APENAS ESTOY APRENDIENDO VBA, PERO ESE CODIGO ME AYUDARIA MUCHO EN MI TRABAJO
Imágen de perfil de Jose Orozco

RE:Fehas Juliana a Gregoriana

Publicado por Jose Orozco (1 intervención) el 11/07/2015 21:07:28
88216067 ( 70417 ) 01/01/70
88256316 ( 72780 ) 01/01/70
12686246 ( 68286) 01/01/70
17952565 66781 01/01/70
13196718 69476 01/01/70


La segunda es una fecha que se asume es juliana modificad,, esto esta en Oracle 11g, como la convirto en Gregoriana o viceversa.. ?? es urgente por favor

RE:Fehas Juliana a Gregoriana

Publicado por mPIN (1 intervención) el 18/05/2017 17:17:02
(icdicj / 1000) * 1000 = icdicj no tiene sentido eso