Les meilleures sources PostgreSQL
Les meilleures sources PostgreSQLConsultez toutes les sources
Nombre d'auteurs : 4, nombre de sources : 38, dernière mise à jour : 20 juin 2005
- Déterminer la date de Paque
- Déterminer si l'année est bissextile ou non
- Avoir la date du debut du mois
- Connaitre le nombre de jours dans le mois
- Connaitre le nombre de jours dans l'année
- Connaitre le numero de jour de l'année
- Connaitre le numero de semaine
- Tester si la date correspond au passage à l'heure d'été
- Teste si la date correspond au passage à l'heure d'hiver
Sélectionnez
CREATE
OR
REPLACE
FUNCTION
"public"
."datepaque"
(
annee integer
)
RETURNS
date
AS
$body
$
/*
Retourne le jour de paque
Basé sur la fonction de SQLPro
SELECT datepaque(2005);
2005-03-27
*/
DECLARE
g integer
;
i integer
;
j integer
;
c integer
;
h integer
;
l integer
;
jourpaque integer
;
moispaque integer
;
dimpaque date
;
BEGIN
g:=
annee %
19
;
c:=
annee /
100
;
h:=(
c-
c/
4
-(
8
*
c+
13
)/
25
+
19
*
g+
15
)
0
;
i:=
h-(
h/
28
)*(
1
-(
h/
28
)*(
29
/(
h+
1
))*((
21
-
g)/
11
))
;
j:=(
annee+
annee/
4
+
i+
2
-
c+
c/
4
)%
7
;
l:=
i-
j;
moispaque:=
3
+(
l+
40
)/
44
;
jourpaque:=
l+
28
-
31
*(
moispaque/
4
)
;
dimpaque:=
date
(
annee::text
||
'-'
||
moispaque::text
||
'-'
||
jourpaque::text
)
;
return
dimpaque;
END
;
$body
$
LANGUAGE
'plpgsql'
VOLATILE RETURNS
NULL
ON
NULL
INPUT SECURITY
INVOKER
;
Sélectionnez
CREATE
OR
REPLACE
FUNCTION
"public"
."estbissextile"
(
integer
)
RETURNS
boolean
AS
$body
$
/*
Teste si l'annee est bissextile
Exemple : SELECT estbissextile(2004);
TRUE
*/
SELECT
(
$1
%
4
=
0
)
AND
((
$1
%
100
!=
0
)
OR
(
$1
@0
=
0
))
;
$body
$
LANGUAGE
'sql'
VOLATILE RETURNS
NULL
ON
NULL
INPUT SECURITY
INVOKER
;
Créé le 23 août 2005 par Damien Griessinger (HpAlpha)
Sélectionnez
CREATE
OR
REPLACE
FUNCTION
"public"
."datedebmois"
(
date
)
RETURNS
date
AS
$body
$
/*
Retourne la date du debut du mois
Exemple : SELECT datedebmois('2005-08-29');
2005-08-01
*/
SELECT
(
EXTRACT
(
YEAR
FROM
$1
::date
)||
'-'
||
EXTRACT
(
MONTH
FROM
$1
::date
)||
'-01'
)
::date
;
$body
$
LANGUAGE
'sql'
VOLATILE RETURNS
NULL
ON
NULL
INPUT SECURITY
INVOKER
;
Créé le 30 août 2005 par Damien Griessinger (HpAlpha)
Sélectionnez
CREATE
OR
REPLACE
FUNCTION
"public"
."joursdansmois"
(
date
)
RETURNS
integer
AS
$body
$
/* Retourne le nombre de jours du mois
Exemple : SELECT joursdansmois('2004-02-11');
29
*/
DECLARE
jdansm CONSTANT
int2
[12]
=
'{31,28,31,30,31,30,31,31,30,31,30,31}'
;
mm int2
;
r int2
;
BEGIN
mm:=
EXTRACT
(
MONTH
FROM
$1
)
::integer
;
r:=
jdansm[mm]
;
IF
(
mm=
2
)
AND
(
EXTRACT
(
YEAR
FROM
$1
)
::integer
%
4
=
0
)
AND
((
EXTRACT
(
YEAR
FROM
$1
)
::integer
%
100
!=
0
)
OR
(
EXTRACT
(
YEAR
FROM
$1
)
::integer
@0
=
0
))
THEN
r:=
r+
1
;
END
IF
;
return
r;
END
;
$body
$
LANGUAGE
'plpgsql'
VOLATILE RETURNS
NULL
ON
NULL
INPUT SECURITY
INVOKER
;
Créé le 30 août 2005 par Damien Griessinger (HpAlpha)
Sélectionnez
CREATE
OR
REPLACE
FUNCTION
"public"
."nombrejoursannee"
(
date
)
RETURNS
integer
AS
$body
$
/*
Retourne le nombre de jours dans l'annee
Exemple : SELECT nombrejoursannee('2005-08-29');
366
*/
SELECT
CASE
WHEN
(
EXTRACT
(
YEAR
FROM
$1
)
::integer
%
4
=
0
)
AND
((
EXTRACT
(
YEAR
FROM
$1
)
::integer
%
100
!=
0
)
OR
(
EXTRACT
(
YEAR
FROM
$1
)
::integer
@0
=
0
))
THEN
365
ELSE
366
END
;
$body
$
LANGUAGE
'sql'
VOLATILE RETURNS
NULL
ON
NULL
INPUT SECURITY
INVOKER
;
Créé le 30 août 2005 par Damien Griessinger (HpAlpha)
Sélectionnez
CREATE
OR
REPLACE
FUNCTION
"public"
."numerodejour"
(
date
)
RETURNS
integer
AS
$body
$
/* Retourne le numero du jour
Exemple : SELECT numerodejour('2005-08-29');
241
*/
SELECT
extract
(
doy from
$1
::date
)
::integer
;
$body
$
LANGUAGE
'sql'
VOLATILE RETURNS
NULL
ON
NULL
INPUT SECURITY
INVOKER
;
Créé le 30 août 2005 par Damien Griessinger (HpAlpha)
Sélectionnez
CREATE
OR
REPLACE
FUNCTION
"public"
."numerosemaine"
(
date
)
RETURNS
integer
AS
$body
$
/*
Retourne le numero de semaine
Exemple : SELECT numerosemaine('2005-08-29');
35
*/
SELECT
EXTRACT
(
week
FROM
$1
::date
)
::integer
;
$body
$
LANGUAGE
'sql'
VOLATILE RETURNS
NULL
ON
NULL
INPUT SECURITY
INVOKER
;
Créé le 30 août 2005 par Damien Griessinger (HpAlpha)
Sélectionnez
CREATE
OR
REPLACE
FUNCTION
"public"
."passageheureete"
(
date
)
RETURNS
boolean
AS
$body
$
/* Teste si la date correspond au passage à l'heure d'été
( dernier dimanche de mars )
Exemple : SELECT passageheureete('2005-04-02');
*/
DECLARE
m date
;
BEGIN
m:=(
EXTRACT
(
year
FROM
$1
)||
'-03-31'
)
::date
;
WHILE
EXTRACT
(
dow FROM
m)&
lt;>
0
LOOP
m:=
m-
'1 day'
::interval
;
END
LOOP
;
return
$1
=
m;
END
;
$body
$
LANGUAGE
'plpgsql'
VOLATILE RETURNS
NULL
ON
NULL
INPUT SECURITY
INVOKER
;
Créé le 30 août 2005 par Damien Griessinger (HpAlpha)
Sélectionnez
CREATE
OR
REPLACE
FUNCTION
"public"
."passageheurehiver"
(
date
)
RETURNS
boolean
AS
$body
$
/* Teste si la date correspond au passage à l'heure d'hiver
( dernier dimanche d'octobre )
Exemple : SELECT passageheurehiver('2005-10-30');
TRUE
*/
DECLARE
m date
;
BEGIN
m:=(
EXTRACT
(
year
FROM
$1
)||
'-10-31'
)
::date
;
WHILE
EXTRACT
(
dow FROM
m)&
lt;>
0
LOOP
m:=
m-
'1 day'
::interval
;
END
LOOP
;
return
$1
=
m;
END
;
$body
$
LANGUAGE
'plpgsql'
VOLATILE RETURNS
NULL
ON
NULL
INPUT SECURITY
INVOKER
;
Créé le 30 août 2005 par Damien Griessinger (HpAlpha)