Vous n'êtes pas identifié(e).
Pages : 1
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
la fonction à utiliser est extract:
extract(epoch from mon_timestamp)
Marc.
Hors ligne
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
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
Plutôt d'accord avec SQLpro, en dehors du terme sargable que je ne connais pas. Ça veut dire quoi ?
Guillaume.
Hors ligne
Ça veut juste dire «utilisable par un index».
Marc.
Hors ligne
ok merci pour vos remarques
JM
Hors ligne
Pages : 1