hola, tengo un inconveniente al realizar la siguiente sentencia sql:
SELECT * FROM reg_fechas LIKE '%2010-04-21%'"
Lo que quiero hacer es buscar dentro de mi registro todos los campos que coincidan con un rango de fechas. El registro reg_echas es un timestamp que guarda la fecha de la siguiente manera: 2010-04-21 10:05:38.8416484
La sentencia anterior no me funciona, no hace la busqueda que necesito, seguro es por el tipo de dato TIMESTAMP...
Como puedo hacer la consutla?
Saludos y gracias.-
Consulta "SELECT * FROM reg_fechas LIKE '%2010-04-21%'"
Lun, 08/03/2010 - 15:12 — cce77una posible solucion que encontre a esta consulta es:
select * from tabla_fechas where cast(reg_fechas as date) between '2010-03-04' and '2010-05-07';
La probe y me funciona bien.
Dado que la tabla de fechas es muy grande, la sentencia sql que encontre es la mas adecuada para realizar esta consulta?
Saludos.-
Re: Consulta "SELECT * FROM reg_fechas LIKE '%2010-04-21%'"
Mar, 09/03/2010 - 15:48 — rafaelmauna posible solucion que encontre a esta consulta es:
select * from tabla_fechas where cast(reg_fechas as date) between '2010-03-04' and '2010-05-07';
No hace falta que uses cast(). Esto valdria y te ahorras la conversion:
Consulta "SELECT * FROM reg_fechas LIKE '%2010-04-21%'"
Lun, 08/03/2010 - 16:13 — cce77Me surgio una duda aun mas grande ahora. Tengo en una tabla guardados un dato en particular por cada fecha y ese dato a su vez esta relacionado con otra tabla donde se encuentra un conjunto de datos.
La idea es buscar las coicidencias segun fecha de una tabla y q a su vez, con ese dato busque en otra tabla el resto de los datos.
Quisiera que me genere una lista completa pero solo me genera un resultado.
Por ejemplo:
select (nombre,dni) from reg_personal where dato1 = (select dato from reg_fechas where cast(fchl as date) between '2010-03-08' and '2010-03-08');
Esto ultimo me devuelve solo el ultimo nombre y dni de la tabla reg_personal que coicide con el ultimo registro encontrado de la tabla reg_fechas.
Quisiera que me devuelva todos los registros de la tabla re_personal que coicidente con cada dato1 encontrado en la tabla reg_fechas?
Cualquier ayuda me viene al pelo.
Gracias.-
Re: Consulta "SELECT * FROM reg_fechas LIKE '%2010-04-21%'"
Mar, 09/03/2010 - 15:53 — rafaelmaselect (nombre,dni) from reg_personal where dato1 = (select dato from reg_fechas where cast(fchl as date) between '2010-03-08' and '2010-03-08');
Podrias usar IN o un JOIN:
Re: Consulta "SELECT * FROM reg_fechas LIKE '%2010-04-21%'"
Mar, 09/03/2010 - 16:40 — cce77Probe las dos secuencias y solo me devuelve el ultimo de la lista que encuentra. Me deberia devolver 4 filas y de esas 4 solo me devuelve la ultima.
Tengo dos tablas:
CREATE TABLE ra
( ID smallint not null,
FCHL TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
DMN varchar(12),
NYA varchar(30) not null,
DNI varchar(15) not null,
primary key (ID,FCHL)) without oids;
CREATE TABLE hcv
( ID smallint,
RCM varchar(25),
FCHL TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
primary key (ID, FCHL)) without oids;
Suponiendo que estos son los dos ultimos registros que se han almacenado, siendo que el campo " id " se repite muchas veces.
INSERT INTO ra (id,dmn,nya,dni) values (2,'6347','pepe','734957844');
INSERT INTO hcv (id,rcm) values(2,'6347');
De esta manera se van llenado las tablas: primero se llena la tabla " ra ", luego la tabla " hcv ".
select nya,dni from ra as a left outer join hcv as b
on a.dmn = b.rcm
where b.fchl between '2010-01-01' and '2010-05-01';
Me devuelve solo un registro, el ultimo:
nya dni
-------- ----------
pepe 734957844
(1 fila)
Por que me devuelve solo uno cuando me deberia devolver todos?
Re: Consulta "SELECT * FROM reg_fechas LIKE '%2010-04-21%'
Mar, 09/03/2010 - 19:54 — rafaelmaPor que me devuelve solo uno cuando me deberia devolver todos?
¿Estas seguro de que no olvidas algun detalle?. Acabo de probar el ejemplo que das con:
Y como ves funciona a la perfeccion.
¿En que te basas para decir que deberia devolver 4 filas? ¿Cumplen estas 4 filas la condicion a.dmn = b.rcm y between '2010-01-01' and '2010-05-01'?
Re: Consulta "SELECT * FROM reg_fechas LIKE '%2010-04-21%'
Mié, 10/03/2010 - 12:28 — cce77Si, la cumplen. Porque es el mismo usuario (yo, haciendo pruebas) que cargo las cuatro filas y en la fecha 2010-03-04/08. Deberia a aprecer.
Yo probe en la misma tabla que te pase y tambien me funciona, la tabla que te pase es mas resumida porque solo esos datos utilizo en esta consulta. Pero la tabla completa sobre la cual utilizo tiene mas campos. Te la paso capaz sirve de algo:
CREATE TABLE ra
( ID smallint not null,
FCHL TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, // este campo es independiente del fchl de la tabla hcv
DMN varchar(12),
NCHS varchar(25),
NMTR varchar(25),
MRC varchar(20),
MDL varchar(20),
CLR varchar(15),
NF12 varchar(20) not null,
NYAT varchar(30) not null,
DNIT varchar(15) not null,
NCCD varchar(30) not null,
FCH varchar(10),
IDP smallint not null,
IDPV smallint not null,
BSVS1 text,
TP varchar(1), //tipo de vehiculo
primary key (ID, IDP, IDPV,FCHL)) without oids;
CREATE TABLE hcv
( ID smallint,
IDM int,
TV varchar(25),
RCM varchar(25),
M varchar(25),
FCHL TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
primary key (ID, FCHL)) without oids;
Solo me interesa saber los datos de la tabla "ra" que coincidan los los de las tablas hcv, esta ultima tabla es como un registro log que se genera cuando se modifica la tabla hcv.
La igualdad se deberia dar entre el registro " nf12 " de la tabla " ra " y el registro " rcm " de la tabla " hcv ".
Yo realizo la consulta en esta tabla y me sigue tirando solamente la ultima tabla.
Me esta volviendo loco esta cosa...
Re: Consulta "SELECT * FROM reg_fechas LIKE '%2010-04-21%'
Mié, 10/03/2010 - 12:47 — cce77Solucionado. La consulta que me pasaste esta bien, cometi un error en el la tabla hcv, cuando almaceno los datos. No me di cuenta que estaba almacenando datos de diferentes tablas, por eso al ver que hcv tenia 4 filas y me salia solo una me volvi loco probando, una y otra vez...despues de un minucioso analisis linea a linea me di cuenta.
Muchisimas gracias por tu tiempo y ayuda. Lo agradezco muchisimo.
Saludos.-
DA
Lun, 15/03/2010 - 05:40 — Anónimopara consultar fecha en lugar de SELECT * FROM reg_fechas LIKE '%2010-04-21%'"
usa
SELECT * FROM reg_fechas LIKE #%2010-04-21%#"
Saludo
Mié, 06/10/2010 - 17:58 — AnónimoEstaba buscando uno con like pero me sirvio el eejemplo con Between, GRacias..
Enviar nuevo comentario