SQL – Cálculo de fecha juliana

La fecha juliana empieza por 1 el 1 de Enero y es correlativa hasta el 365 el 31 de Diciembre (si no es bisiesto, en cuyo caso acabaría en 366).

Suponiendo que tengamos un campo denominado FECHA de tipo Datetime, la fecha juliana la podemos calcular restando a la FECHA el 31 de Diciembre del año anterior (YEAR(FECHA)-1). Al transformar la fecha a un número entero, la hora de la fecha no nos influye. Por tanto, la instrucción SQL quedaría:

SELECT CAST(FECHA-CAST(CAST(YEAR(FECHA)-1 AS VARCHAR(4))+'1231' AS DATETIME) AS INT)

Si queremos que devuelva un VARCHAR de 3 dígitos (por ejemplo: 001, 002,…) en vez de un INT:

SELECT RIGHT('000'+CAST(CAST(FECHA-CAST(CAST(YEAR(FECHA)-1 AS VARCHAR(4))+'1231' AS DATETIME) AS INT) AS VARCHAR),3)

Si además queremos añadirle el año al final el año con dos dígitos (por ejemplo:  00116, 00216, 00316,…):

SELECT RIGHT('000'+CAST(CAST(FECHA-CAST(CAST(YEAR(FECHA)-1 AS VARCHAR(4))+'1231' AS DATETIME) AS INT) AS VARCHAR),3) + RIGHT(CAST(YEAR(FECHA) as varchar),2)