Vous n'êtes pas identifié(e).

#1 13/06/2013 11:43:07

mortimer.pw
Membre

Fonction avec intervalle

Bonjour,

Je travaille sous PostgreSQL 8.4 à 9.2 sous CentOS 5.9.

J'ai une requête Oracle à porter sous PostgreSQL.

SELECT TO_CHAR(CEIL((TO_DATE(TO_CHAR(jour,'dd/mm/yy') ||' '|| heure, 'dd/mm/yy hh24:mi:ss')-DATE '-4712-01-01')*288)/288+DATE '-4712-01-01','hh24:mi:ss'),COUNT(*)
FROM ma_table
WHERE jour>=TO_DATE('20130501','YYYYMMDD') AND jour<=TO_DATE('20130531','YYYYMMDD')
AND code='9999'
GROUP BY TO_CHAR(CEIL((TO_DATE(TO_CHAR(jour,'dd/mm/yy') ||' '|| heure, 'dd/mm/yy hh24:mi:ss')-DATE '-4712-01-01')*288)/288+DATE '-4712-01-01','hh24:mi:ss');

Elle me retourne le nombre de lignes par intervalle de 5min.

PostgreSQL semble ne pas apprécier le '-4712-01-01', il me retourne : "time zone displacement out of range: "-4712-01-01"

Avez-vous une idée du problème ?

Hors ligne

#2 14/06/2013 01:16:21

rjuju
Administrateur

Re : Fonction avec intervalle

Bonjour,

je ne pense pas qu'on puisse saisir de date négative sous postgres.

Hors ligne

#3 17/06/2013 11:06:18

Marc Cousin
Membre

Re : Fonction avec intervalle

Si, on peut. Par contre, il faut utiliser une syntaxe différente (il ne comprend pas celle là):

Soit:
select DATE '4713-01-01 BC';

Soit:

select to_date('-4712-01-01','YYYY-MM-DD');
    to_date   
---------------
4713-01-01 BC
(1 ligne)


Parce qu'en plus on a la bonne blague, l'an 0, c'est '1 BC' smile

Par contre, 4713 BC c'est le plus bas où on puisse aller.


Marc.

Hors ligne

Pied de page des forums