Traitement sur les dates¶
Convertir une date Access en type date¶
Sous Access et historiquement Lotus 1-2-3 (Explication ici) la date est stockée sous forme d’un entier, Dans PostgreSQL nosu allons utiliser le type interval pour retrouver le type date.
1--
2-- Fonction qui converti un entier en date
3-- Dans Lotus 1-2-3 et Access, le jour 0 est égal au 30/12/1899
4-- Auteur: Christophe CHAUVET
5-- License: Creative commons BY-SA
6-- https://creativecommons.org/licenses/by-sa/4.0/
7--
8CREATE OR REPLACE FUNCTION access_to_date(
9 a_num INTEGER)
10RETURNS date AS
11$BODY$
12
13BEGIN
14
15 RETURN ('1899-12-30'::date + (a_num||' day')::interval)::date;
16
17END;
18
19$BODY$
20LANGUAGE plpgsql;
Télécharger le fichier access_to_date.sql
Pour l’utiliser
SELECT access_to_date(42821)
-- on obtient 27/03/2017
Convertir un type date en date Access¶
La fonction inverse, qui permet de retrouver la valeur à stocker
1--
2-- Fonction qui converti une date en entier
3-- Dans Lotus 1-2-3 et Access, le jour 0 est égal au 30/12/1899
4-- Auteur: Christophe CHAUVET
5-- License: Creative commons BY-SA
6-- https://creativecommons.org/licenses/by-sa/4.0/
7--
8CREATE OR REPLACE FUNCTION date_to_access(
9 a_date DATE)
10RETURNS integer AS
11$BODY$
12
13BEGIN
14
15 RETURN (a_date - '1899-12-30'::date)::integer;
16
17END;
18
19$BODY$
20LANGUAGE plpgsql;
Télécharger le fichier date_to_access.sql
SELECT date_to_access('2017-03-27'::date)
-- on obtient 42821