mercoledì 4 giugno 2008

Utilizzo avanzato di PostgreSQL

Per la prima volta vengo a contatto, per lavoro, con qualcuno che usa il database in modo avanzato ed ecco qualche tip che ho estratto (da mettere come campi della select):

Concatenazione
--------------

> 'pref-' || nome :: varchar (5) as "nome con prefisso"

dove || concatena il prefisso alla sotto stringa di lunghezza 5 del campo nome

Condizione
---------

> case when data is null then NULL
> else to_char(data :: date, 'dd/mm/yyyy')
> end as "data_str"

con il controllo sul campo data che viene trasformato in stringa impostata a null se era null, altrimenti formattata secondo un modo diverso


Differenza tra date
-------------------

> extract(year from age(data_arrivo :: date, data_partenza :: date))
> as "anni impiegati"

calcola la differenza tra date e ne estrae il solo anno

Formattazione ore
-----------------

> case
> when ora is null then null
> else to_char(((ora :: varchar(2)) || ':00:00') :: time, 'hh24:mm')
> end as "ora formattata"

controlla il campo ora (varchar(2) con valori "00" -> "23") e se è non nullo lo trasforma in "00:00" -> "23:00"

Altro esempio di age()
----------------------

> case
> when age(data1 :: date + time1 :: time, data2 :: date + time2 :: time) < '6 hour' then 0
> when age(data1 :: date + time1 :: time, data2 :: date + time2 :: time) < '24 hour' then 1
> else -1
> end as 'interval'

calcola la differenza tra due somme di date+time, e mette nel campo interval un flag intero -1 -> 1


che dire.. troppe volte ho dovuto fare a livello superiore controlli che andavano fatti direttamente nel database, per cui sono rimasto positivamente colpito da questo script, che tra l'altro viene usato per creare una view.. altro strumento che troppo spesso viene ignorato
ah, sto cercando di usare questo: markdown

Nessun commento: