Funciones SQL

Funciones Matem‡ticas

abs(x): Valore Absoluto.

ceil(x): Redondeo superior (techo).

floor(x): Redondeo inferior (piso).

mod(x,y): Residuo.

round(x,s): Redondeo a s decimales.

bdi00=> SELECT mod(5,2);
mod 
-----
 1

Funciones de Fecha/Hora

Fecha actual: Select current_date;

Hora Actual Select current_time;

Fecha y hora actual: Select current_timestamp; Fecha y hora actual: Select now();

Diferencia de fechas: select now() - date '2012-01-01';

Adicionando intervalos a fechas: select date '2010-01-01' + integer '47';

Adicionando intervalos de tiempo: select now() + interval '3 hour 5 minute';

Extraer un campo de una fecha: select extract('year' from now());

Verificar si dos intervalos se superponen: SELECT (DATE '2001-02-16', DATE '2001-12-21') OVERLAPS

     (DATE '2001-10-30', DATE '2002-10-30');

Funciones de Cadenas de Caracteres

length(s) : Longitud de la cadena s.

initcap(s) : Retorna s con la primera letra de cada palabra en mayœscula.

lower(s), upper(s) : Retorna s en minœscula y mayœscula respectivamente.

lpad(s,n[,c]), rpad(s, n [,c]) : Retorna s complementada por la izquierda (resp. derecha) con el caracter c hasta completar una longitud n.

substr(s,n [,l]) : Retorna la subcadena de s que empieza en el caracter n con una longitud má‡xima de l.

s1 || s2 : Concatena la cadena s1 y s2

 bdi00=> select lpad('hola',10,'-');
    lpad    
 ------------
  ------hola

Conversión de Tipos

to_char(n, f): Retorna el número n con el formato f.

bdi00=> select to_char(123456789,'999G999G999G999D9');
      to_char       
--------------------
      123.456.789,0
   
bdi00=> select to_char(10500000,'999,999,999.99');
     to_char      
------------------
   10,500,000.00

to_char(t, f): Retorna el timestemp t con el formato f.

bdi00=> select to_char(now(), 'YYYY-MM-DD');
  to_char   
------------
 2010-03-10

bdi00⇒ select to_char(now(), 'YYYY-MM-DD hh24:mi:ss');

       to_char       
---------------------
 2010-03-10 15:43:03
bdi00=> select to_char(now(), 'Day, Month, Year');
          to_char           
----------------------------
 Wednesday, March    , 0ear
bdi00=> select to_char(now(), 'Day, Month, Y,YYY');
           to_char           
-----------------------------
 Wednesday, March    , 2,010

to_date(s, f): Retorna la fecha que corresponde a la cadena s con el formato f.

bdi00=> select to_date('10032010','ddmmyyyy');
  to_date   
------------
 2010-03-10

to_timestamp(s, f): Retorna el timestamp que corresponde a la cadena s con el formato f.

bdi00=> select to_timestamp('10032010 13:45','ddmmyyyy hh24:mi');
to_timestamp      
------------------------
 2010-03-10 13:45:00-05

Más información aquí: PostgreSQL 8.1.21 Documentation

Taller

  • Dada la cadena “hola mundo ” obtener la cadena “hola mundo” (eliminación de espacios)
  • Obtener un número randómico entre 100 y 1000.
  • Dada la cadena “Cra 18 calle 118 -250” encontrar la posición donde ocurre la subcadena “calle”
  • Convertir la cadena “juan perez” en “Juan Perez” (iniciales en mayúscula)
  • Dado un número calcular su factorial
  • Ajustar la cadena “3500” para que ocupe 10 posiciones (caracteres) rellanando con ceros al inicio.
  • Convertir la cadena “3218200” (un teléfono) para que ocupe 10 posiciones terminadas en “*” (“3218200***”)
  • Calcular la raíz cuadrada de un número.
  • El query select tablename from pg_tables where schemaname = 'public'; retorna los nombres de las tablas creadas por el usuario. Modificar el anterior query para generar un script de desintalación:

drop table XXXX cascade;

  • De la cadena”3-21-82-00” remover todos los ”-”
  • De un teléfono en formato ”+57(2) 3218200” remover los números del código internacional ”+57(2) ”
  • Calcular el área de un círculo de radio 4.5
  • Calcular el número de días entre el 1ero de Mayo de 2008 y el 5 de Julio de 2007
  • Tengo la fecha de inicio (con su hora) y fecha de finalización de una llamada. Cuanto debo pagar si se cobra a $500 el minuto y se redondea al entero superior ?

solución

 
materias/funciones_sql.txt · Última modificación: 2012/03/07 14:02 por caolarte
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki