Oracle - modo de busqueda de un rango de fecha con like y betwee

 
Vista:

modo de busqueda de un rango de fecha con like y betwee

Publicado por David (5 intervenciones) el 29/03/2013 18:18:21
Buenas estoy comensando en esto y necesito buscar un rango de fecha en like o between estube probando con este codigo y me tira un error FECHA BETWEEN '01-01-2012' AND '31-01-2012'
la fecha es del tipo date
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

modo de busqueda de un rango de fecha con like y betwee

Publicado por Luis (235 intervenciones) el 29/03/2013 22:15:55
Que error te sale?? Leiste el error???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

modo de busqueda de un rango de fecha con like y betwee

Publicado por David (5 intervenciones) el 29/03/2013 23:59:22
ESTE ES EL ERROR QUE ME SALE
AND DC.FECHA BETWEEN '01-01-2012' AND '31-01-2012'
ERROR at line 8:
ORA-01843: not a valid month
DE IGUAL MODO YA LO PUDE RESOLVER INVESTIGANDO DE LA SIGUIENTE FORMA
DC.fecha >= to_date('01/01/2012','dd/mm/yyyy') and DC.fecha <= to_date('31/01/2012','dd/mm/yyyy')
PERO ME GUSTARIA SABER USANDO BETWEE Y LIKE PARA TENER OTRAS OPCIONES
DESDE YA MUCHAS GRACIAS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

modo de busqueda de un rango de fecha con like y betwee

Publicado por Luis (235 intervenciones) el 30/03/2013 00:15:42
Segun lo que tu usas :

DC.fecha >= to_date('01/01/2012','dd/mm/yyyy')
and DC.fecha <= to_date('31/01/2012','dd/mm/yyyy')

en la segunda condicion solo obtendrias los registros menores o iguales a '31/01/2012 00:00:00' es decir tu select no me retornaria los registros registrados el dia '31/01/2012 10:20:00' del dia 31 de enero a las 10 y 20 de la mañana, por eso te recomiendo usar la condicion :

DC.fecha >= trunc(to_date('01/01/2012','dd/mm/yyyy') )
and DC.fecha < trunc( to_date('31/01/2012','dd/mm/yyyy') ) +1


ya que el tipo de dato de fecha en oracle es 'dd/mm/yyyy hh:mi:ss' , es decir fecha y hora.


Para condiciones de fecha no es recomendable usar el between pues es muy costoso y al ejecutarlo la sentencia demora mas.

Segun mi experiencia el like solo lo he usado para ubicar por ejemplo apellidos que contengan caracteres por ejemplo ;

select * from clientes
where apepat like 'A%' ;

Aqui consulto todos los clientes cuyo apellido paterno empieza con la letra 'A'.

Ademas, favor de verificar que al construir tu select no sea muy costoso y usar los indices de las tablas ya que nos ayudan a recuperar la informacion.

Saludos

Luis
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

modo de busqueda de un rango de fecha con like y betwee

Publicado por David (5 intervenciones) el 30/03/2013 00:37:30
MUCHAS GRACIAS POR EL CONSEJO VOY A TENERLO EN CUENTA .
SALUDOS..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar