Re: [postgresql-it] Presentazioni e problema: selezione 'parziale' per campo date

  • From: "Chris Mair" <chris@xxxxxxxx>
  • To: <postgresql-it@xxxxxxxxxxxxx>
  • Date: Thu, 29 Nov 2007 07:17:10 +0100

Per giungere al punto, il problema è il seguente:

Ho una tabella con un campo tipo date(YYYY/MM/DD) da cui mi serve
selezionare dei dati, e dovrei strutturare la select in modo tale 
da agire
su tale campo in modo anche parziale, ovvero potendo indicare non 
solo una
data specifica (p.es. "select [campi] from [tabella] where date =
'2007/11/24'  " ) ma anche una data parziale
(ovvero solo anno e mese, o anche solo l'anno, come per dire 
"select [campi]
from [tabella] where date = '2007/11/??', giusto per spiegarmi a 
livello
logico  ").

Molti mi hanno parlato bene della flessibilità di postgresql 
riguardo le
funzionalità di date/time, ma fino ad ora non sono riuscito a 
risolvere il
problema traducendolo in una query adeguata.

E' possibile "parzializzare" un campo date?

La cosa che potrebbe servirti e` date_trunc() come in

 chris=# create table tab (d date);
 CREATE TABLE
 chris=# insert into tab values ('2007-04-03'), ('2007-04-17'), 
('2007-05-18');
 INSERT 0 3
 chris=# select * from tab where date_trunc('month', d) = '2007-04-
01';
      d      
 ------------
  2007-04-03
  2007-04-17
 (2 rows)

In termini di performance potrebbe essere meglio la soluzione che ti
ha proposto Daniele Varrazzo (vedi altra mail).

PS: c'e` anche date_part() che potra` tornarti comodo.

Bye,
Chris.



Other related posts: