OVH Cloud OVH Cloud

Recherche SQL

5 réponses
Avatar
JohnFuss
Bonjour,

je cherche à traduire une date de Julien en Grégorien

ex : 105319 pour le 15 novembre 2005
en format Julien on a le 1 pour le siècle, 05 pour l'année et ensuite le
quantième du jour de l'année.

Merci d'avance.

John

5 réponses

Avatar
Fred BROUARD
JohnFuss a écrit:
Bonjour,

je cherche à traduire une date de Julien en Grégorien

ex : 105319 pour le 15 novembre 2005
en format Julien on a le 1 pour le siècle, 05 pour l'année et ensuite le
quantième du jour de l'année.



Le plus performant sera de créer une table de planning (ou un ensemble de tables
de gestion de calendrier).
Lisez l'article que j'ai écrit à ce sujet :
http://sqlpro.developpez.com/cours/gestiontemps/

dans votre cas : ce format sera calculé de la façon suivante par rapport à la
table T_PLN_JOUR_PJR :
CAST(19 - (PAN_ID / 100) AS CHAR(1)) +
CAST(dbo.FN_PAD_ZERO(PAN_ID % 100, 2) AS CHAR(2)) +
CAST(dbo.FN_PAD_ZERO(PJA_ID, 3) AS CHAR(3))

Avec une UDF pour dbo.FN_PAD_ZERO comme décrite ici :
http://sqlpro.developpez.com/cours/sqlserver/udf/

A +

Merci d'avance.

John





--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
JohnFuss
Je cherchais plutot quelque chose comme ça qui fonctionne mais c'est un peu
'bourrin'

TO_CHAR(TO_DATE(TO_CHAR(TO_DATE('01/01/'||DECODE(SUBSTR('105284', 1, 1), 1,
'20', '19')||SUBSTR('105284', 2, 2)), 'dd/mm/yyyy'))+SUBSTR('105284', 4, 3),
'DD/MM/YYYY')

John

"Fred BROUARD" a écrit dans le message de
news:OzKMrc0%


JohnFuss a écrit:
> Bonjour,
>
> je cherche à traduire une date de Julien en Grégorien
>
> ex : 105319 pour le 15 novembre 2005
> en format Julien on a le 1 pour le siècle, 05 pour l'année et ensuite le
> quantième du jour de l'année.

Le plus performant sera de créer une table de planning (ou un ensemble de


tables
de gestion de calendrier).
Lisez l'article que j'ai écrit à ce sujet :
http://sqlpro.developpez.com/cours/gestiontemps/

dans votre cas : ce format sera calculé de la façon suivante par rapport à


la
table T_PLN_JOUR_PJR :
CAST(19 - (PAN_ID / 100) AS CHAR(1)) +
CAST(dbo.FN_PAD_ZERO(PAN_ID % 100, 2) AS CHAR(2)) +
CAST(dbo.FN_PAD_ZERO(PJA_ID, 3) AS CHAR(3))

Avec une UDF pour dbo.FN_PAD_ZERO comme décrite ici :
http://sqlpro.developpez.com/cours/sqlserver/udf/

A +
>
> Merci d'avance.
>
> John
>
>

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************



Avatar
Fred BROUARD
TO_CHAR n'existe pas dans le langage SQL. C'est une focntion propre à Oracle !
DECODE non plus. Quant à SUBSTR c'est SUBSTRING et pour la concaténation sous
SQL Server c'est + !
Pour les formats de date voir CONVERT.
Je doute cepandant que tu ais ton quantième !

A +

JohnFuss a écrit:
Je cherchais plutot quelque chose comme ça qui fonctionne mais c'est un peu
'bourrin'

TO_CHAR(TO_DATE(TO_CHAR(TO_DATE('01/01/'||DECODE(SUBSTR('105284', 1, 1), 1,
'20', '19')||SUBSTR('105284', 2, 2)), 'dd/mm/yyyy'))+SUBSTR('105284', 4, 3),
'DD/MM/YYYY')

John

"Fred BROUARD" a écrit dans le message de
news:OzKMrc0%


JohnFuss a écrit:

Bonjour,

je cherche à traduire une date de Julien en Grégorien

ex : 105319 pour le 15 novembre 2005
en format Julien on a le 1 pour le siècle, 05 pour l'année et ensuite le
quantième du jour de l'année.



Le plus performant sera de créer une table de planning (ou un ensemble de



tables

de gestion de calendrier).
Lisez l'article que j'ai écrit à ce sujet :
http://sqlpro.developpez.com/cours/gestiontemps/

dans votre cas : ce format sera calculé de la façon suivante par rapport à



la

table T_PLN_JOUR_PJR :
CAST(19 - (PAN_ID / 100) AS CHAR(1)) +
CAST(dbo.FN_PAD_ZERO(PAN_ID % 100, 2) AS CHAR(2)) +
CAST(dbo.FN_PAD_ZERO(PJA_ID, 3) AS CHAR(3))

Avec une UDF pour dbo.FN_PAD_ZERO comme décrite ici :
http://sqlpro.developpez.com/cours/sqlserver/udf/

A +

Merci d'avance.

John





--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************









--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
Med Bouchenafa
DECLARE @julianDate char(6)
SET @julianDate5319

SELECT DATEADD(day, @julianDate-(@julianDate/1000)*1000 - 1,
RIGHT(@julianDate/1000,2) + '0101')

Cela pourrait être englobé dans une fonction pour plus de souplesse

--
Bien cordialement
Med Bouchenafa

"JohnFuss" a écrit dans le message de news:
dn717s$kcv$
Je cherchais plutot quelque chose comme ça qui fonctionne mais c'est un
peu
'bourrin'

TO_CHAR(TO_DATE(TO_CHAR(TO_DATE('01/01/'||DECODE(SUBSTR('105284', 1, 1),
1,
'20', '19')||SUBSTR('105284', 2, 2)), 'dd/mm/yyyy'))+SUBSTR('105284', 4,
3),
'DD/MM/YYYY')




John

"Fred BROUARD" a écrit dans le message de
news:OzKMrc0%


JohnFuss a écrit:
> Bonjour,
>
> je cherche à traduire une date de Julien en Grégorien
>
> ex : 105319 pour le 15 novembre 2005
> en format Julien on a le 1 pour le siècle, 05 pour l'année et ensuite
> le
> quantième du jour de l'année.

Le plus performant sera de créer une table de planning (ou un ensemble de


tables
de gestion de calendrier).
Lisez l'article que j'ai écrit à ce sujet :
http://sqlpro.developpez.com/cours/gestiontemps/

dans votre cas : ce format sera calculé de la façon suivante par rapport
à


la
table T_PLN_JOUR_PJR :
CAST(19 - (PAN_ID / 100) AS CHAR(1)) +
CAST(dbo.FN_PAD_ZERO(PAN_ID % 100, 2) AS CHAR(2)) +
CAST(dbo.FN_PAD_ZERO(PJA_ID, 3) AS CHAR(3))

Avec une UDF pour dbo.FN_PAD_ZERO comme décrite ici :
http://sqlpro.developpez.com/cours/sqlserver/udf/

A +
>
> Merci d'avance.
>
> John
>
>

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************







Avatar
JohnFuss
Merci à vous

John

"Med Bouchenafa" a écrit dans le message de
news:OdjDc70%
DECLARE @julianDate char(6)
SET @julianDate5319

SELECT DATEADD(day, @julianDate-(@julianDate/1000)*1000 - 1,
RIGHT(@julianDate/1000,2) + '0101')

Cela pourrait être englobé dans une fonction pour plus de souplesse

--
Bien cordialement
Med Bouchenafa

"JohnFuss" a écrit dans le message de news:
dn717s$kcv$
> Je cherchais plutot quelque chose comme ça qui fonctionne mais c'est un
> peu
> 'bourrin'
>
> TO_CHAR(TO_DATE(TO_CHAR(TO_DATE('01/01/'||DECODE(SUBSTR('105284', 1, 1),
> 1,
> '20', '19')||SUBSTR('105284', 2, 2)), 'dd/mm/yyyy'))+SUBSTR('105284', 4,
> 3),
> 'DD/MM/YYYY')
>

> John
>
> "Fred BROUARD" a écrit dans le message de
> news:OzKMrc0%
>>
>>
>> JohnFuss a écrit:
>> > Bonjour,
>> >
>> > je cherche à traduire une date de Julien en Grégorien
>> >
>> > ex : 105319 pour le 15 novembre 2005
>> > en format Julien on a le 1 pour le siècle, 05 pour l'année et ensuite
>> > le
>> > quantième du jour de l'année.
>>
>> Le plus performant sera de créer une table de planning (ou un ensemble


de
> tables
>> de gestion de calendrier).
>> Lisez l'article que j'ai écrit à ce sujet :
>> http://sqlpro.developpez.com/cours/gestiontemps/
>>
>> dans votre cas : ce format sera calculé de la façon suivante par


rapport
>> à
> la
>> table T_PLN_JOUR_PJR :
>> CAST(19 - (PAN_ID / 100) AS CHAR(1)) +
>> CAST(dbo.FN_PAD_ZERO(PAN_ID % 100, 2) AS CHAR(2)) +
>> CAST(dbo.FN_PAD_ZERO(PJA_ID, 3) AS CHAR(3))
>>
>> Avec une UDF pour dbo.FN_PAD_ZERO comme décrite ici :
>> http://sqlpro.developpez.com/cours/sqlserver/udf/
>>
>> A +
>> >
>> > Merci d'avance.
>> >
>> > John
>> >
>> >
>>
>> --
>> Frédéric BROUARD, MVP SQL Server, expert bases de données et langage


SQL
>> Le site sur le langage SQL et les SGBDR :


http://sqlpro.developpez.com
>> Audit, conseil, expertise, formation, modélisation, tuning,


optimisation
>> ********************* http://www.datasapiens.com


***********************
>>
>
>