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

#1 14/06/2011 15:45:46

Jean-Marie
Membre

passer du type timestamp à un entier

Bonjour

j'ai des enregistrements chacun ayant un champ date de type timestamp dans le format yyyy-mm-dd hh:mm:ss ;
je voudrais faire des requêtes sur ce champ mais en me basant sur un entier correspondant au nombre de secondes depuis le 01/01/1970

donc par exemple au lieu d'écrire

select date, x(coord), y(coord) from table where date between '2011-06-14 05:40:00' and '2011-06-14 09:58:38';

je voudrais arriver à une requête du genre

select date, x(coord), y(coord) from table where (date > 1308030000 and date < 1308045518);

comment puis-je m'y prendre ?

merci d'avance

Jean-Marie

Hors ligne

#2 14/06/2011 15:47:50

Marc Cousin
Membre

Re : passer du type timestamp à un entier

la fonction à utiliser est extract:
extract(epoch from mon_timestamp)


Marc.

Hors ligne

#3 14/06/2011 17:43:40

Jean-Marie
Membre

Re : passer du type timestamp à un entier

ok merci bien

la commande devient ainsi :
select date from table where extract(epoch from date) > 1308030000 and extract(epoch from date) < 1308045518;

Hors ligne

#4 15/06/2011 08:51:40

SQLpro
Membre

Re : passer du type timestamp à un entier

En écrivant votre requête ainsi, vous rendez le prédicat non "sargable", car vous obligez la colonnes à une transformation via une fonction, ce qui empêche toute utilisation d'index.. Vous aurez donc des performances de plus en plus mauvaise au fur et à mesure de la montée en charge...
Préférez faire l'inverse : calculez le TIMESTAMP des bornes à l'aide d'une fonction....

A +


Frédéric Brouard, alias SQLpro,  ARCHITECTE DE DONNÉES,  Expert langage SQL
Le site sur les SGBD relationnel et langage SQL   : http://sqlpro.developpez.com/
Modélisation de données, conseil, expertise, audit, optimisation, tuning, formation
* * * * *  Enseignant CNAM PACA, ISEN Toulon,  CESI Aix en Provence  * * * * *

Hors ligne

#5 15/06/2011 09:37:23

gleu
Administrateur

Re : passer du type timestamp à un entier

Plutôt d'accord avec SQLpro, en dehors du terme sargable que je ne connais pas. Ça veut dire quoi ?


Guillaume.

Hors ligne

#6 15/06/2011 09:48:54

Marc Cousin
Membre

Re : passer du type timestamp à un entier

Ça veut juste dire «utilisable par un index».


Marc.

Hors ligne

#7 15/06/2011 18:24:33

Jean-Marie
Membre

Re : passer du type timestamp à un entier

ok merci pour vos remarques

JM

Hors ligne

Pied de page des forums