Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/03/2007, 05:28
Avatar de fjmasero
fjmasero
 
Fecha de Ingreso: diciembre-2002
Mensajes: 488
Antigüedad: 22 años
Puntos: 1
Pregunta funcion trunc(DATE)

Wenas:

Tengo una duda con la función trunc(DATE).

Su funcionamiento está +/- claro, por ejemplo, en http://www.techonthenet.com/oracle/f...trunc_date.php, pero me queda la duda siguiente.

Si se trunca la fecha, sin indicar el formato, devuelve la fecha sin horas, ¿esto quiere decir que si esta fecha "truncada" la comparas con otras fechas q SI lleven la hora, lo hará, comparando las 24 horas de la fecha "truncada".

Es decir, si dentro de una query cualquiera se hace algo asi

where trunc(campo_fecha) between fecha_inicio and fecha_final

siendo fecha_inicio y fecha_final campos de tipo date, con hora, el filtro sería comparar campo_fecha "truncada", por lo tanto, sin hora, con dos fechas q si la tienen, por lo q entiendo que campo_fecha es como si valiera para las 24 horas del día. Y si no es así, ¿como funciona realmente?

Pongo un ejemplo:

Hago una query con el filtro indicado arriba, y me devuelve 34 registros, todos con campo_fecha = 02/09/2005, mientras que si a dicho filtro, le quito el trunc de campo_fecha, me devuelve tan solo 5 registros, y todos con campo_fecha = 01/09/2005 (por supuesto, lo digo por si acaso, los campos que sirven como rango de fechas a comparar, en ambos casos tienen el mismo valor).

Absolutamente diferente.

Y algo más indicativo: si hago

where trunc(campo_fecha) between fecha_inicio and fecha_final

pero fecha_inicio y fecha_final no tienen hora, devuelve los 34 registros + los 5 q antes comenté.

La verdad es q estoy hecho un lio.

No tengo claro haberlo explicado correctamente, pero no es fácil hacerlo.

Salu2 y gracias.
__________________
No es sabio el que sabe sino el que no sabe y quiere aprender