Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/08/2006, 15h48   #1
Invité régulier
 
Inscription : avril 2004
Messages : 53
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 53
Points : 7
Points : 7
Par défaut operateur "plus proche"

Bonjour, je post en doutant un max, existe il un operateur postgres qui donne la date la plus proche disponible d'une date.(timestamp)

Par exemple
Code :
1
2
3
4
 
SELECT nom_fichier
FROM TABLE
WHERE date is_nearest "2003-12-05 00:00:00";
je suis en train de me galerer assez joliement pour trouver un truc du style. Meme si la fonction n'existe pas, je veux bien un coup de pouce.

merci bien
stross est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2006, 15h58   #2
Invité régulier
 
Inscription : octobre 2005
Messages : 19
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 19
Points : 8
Points : 8
Pourquoi ne pas faire une requete de différence :

SELECT (ta_date - dat2) FROM table WHERE condition ORDER BY 1;

Ainsi il te renverra les lignes trié de la plus prpoche à la plu éloigné.
Voir peut être à utiliser une fonction de renovie de la valeur absolue car il risque de te renvoyer des différence négatives...
TitAnz35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2006, 16h53   #3
Invité de passage
 
Inscription : septembre 2005
Messages : 4
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 4
Points : 4
Points : 4
Envoyer un message via ICQ à jpargudo Envoyer un message via AIM à jpargudo Envoyer un message via MSN à jpargudo
Citation:
Envoyé par TitAnz35
Pourquoi ne pas faire une requete de différence :

SELECT (ta_date - dat2) FROM table WHERE condition ORDER BY 1;
Ainsi il te renverra les lignes trié de la plus prpoche à la plu éloigné.
Voir peut être à utiliser une fonction de renovie de la valeur absolue car il risque de te renvoyer des différence négatives...
C'est la bonne idée qu'il faut exploiter :-) Étant donné que la fonction abs(::interval) n'existe pas en PostgreSQL, on peut s'en sortir par une comparaison des dates associée à un case..when.. en SQL tout bête.

Dans mon exemple, je veux trouver le timestamp le plus proche de now(). Vous pourrez facilement remplacer pour l'adapter à vos besoins:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
test=# select now();
              now
-------------------------------
 2006-08-04 16:50:49.115187+02
(1 ligne)
 
test=# select * from test;
             a
----------------------------
 2006-08-01 16:47:34.203246
 2006-08-02 16:47:36.563467
 2006-08-03 16:47:38.92819
 2006-08-04 16:47:42.036417
 2006-08-05 16:47:45.170757
 2006-08-06 16:47:47.638056
(6 lignes)
 
test=# select a, case when now()>a then now()-a else a-now() end as tri  from test order by tri limit 1;
             a              |       tri
----------------------------+-----------------
 2006-08-04 16:47:42.036417 | 00:03:19.085394
(1 ligne)
jpargudo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h50.


 
 
 
 
Partenaires

Hébergement Web