filtro entre fechas

filtro entre fechas

Postby horacio » Tue Jun 25, 2019 1:26 pm

Colegas, trabajo con Mysql y necesitaría hacer una consulta de la siguiente manera:

Registro
Code: Select all  Expand view  RUN

desde = "20/05/2019", hasta = "27/05/2019"
 


condición consulta
Code: Select all  Expand view  RUN

desde1 -> "23/05/2019", hasta1 -> "25/05/2019"
 


necesitaría que el registro aparezca en la consulta ya que los datos de la condición está contenida en el registro. Si la condición fuera "desde >= desde1 and hasta <= hasta1" ese registro quedaría excluido. Alguien sabe como hacerlo? espero se haya entendido y desde ya muchas gracias

Saludos
horacio
 
Posts: 1363
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: filtro entre fechas

Postby Armando » Tue Jun 25, 2019 2:48 pm

Horacio:

Recuerda que MySQL maneja todo en tipo string, por lo tanto, si entendí, creo que deberías hacerlo así:

Code: Select all  Expand view  RUN

LOCAL desde := DTOS(FechaInicial)
LOCAL hasta := DTOS(FechaFinal)

desde1 => desde .AND. hasta1 <= hasta
 


Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3229
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: filtro entre fechas

Postby horacio » Tue Jun 25, 2019 3:24 pm

Gracias por tu respuesta Armando. eso lo sé. Me parece que no se entiende lo que quise consultar. Quiero hacer una consulta en una tabla cuyos campos entre otros se encuentran "desde" y "hasta", quiero filtrarlos de acuerdo a esos campos. Supongamos que tengo un registro en la tabla con estos datos

Code: Select all  Expand view  RUN

desde = '2019-05-24' y hasta = '2019-05-27'
 


y quiero filtrar esa consulta con estas fechas: fechaDesde -> '2019-05-25' y fechaHasta -> '2019-05-26', quiero que la consulta me devuelva el registro antes mencionado ya que la fecha de los filtros está contenida en el intervalo de las fechas del registro. Espero se entienda

Saludos
horacio
 
Posts: 1363
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: filtro entre fechas

Postby joseluisysturiz » Tue Jun 25, 2019 3:38 pm

horacio wrote:Gracias por tu respuesta Armando. eso lo sé. Me parece que no se entiende lo que quise consultar. Quiero hacer una consulta en una tabla cuyos campos entre otros se encuentran "desde" y "hasta", quiero filtrarlos de acuerdo a esos campos. Supongamos que tengo un registro en la tabla con estos datos

Code: Select all  Expand view  RUN

desde = '2019-05-24' y hasta = '2019-05-27'
 


y quiero filtrar esa consulta con estas fechas: fechaDesde -> '2019-05-25' y fechaHasta -> '2019-05-26', quiero que la consulta me devuelva el registro antes mencionado ya que la fecha de los filtros está contenida en el intervalo de las fechas del registro. Espero se entienda

Saludos

Usa BETWEEN, saludos... :shock:

WHERE campo_fch BETWEEN fch_desde AND fch_hasta

Code: Select all  Expand view  RUN

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2
 
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: filtro entre fechas

Postby Armando » Tue Jun 25, 2019 3:43 pm

Horacio:

Creo ya entendí tu pregunta, son dos campos de tipo fecha que están en el mismo registro, cierto?

Entonces la consulta debe funcionarte:

desde = "20190524" .AND. hasta = "20190527"

A ver si le atine :-)

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3229
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: filtro entre fechas

Postby horacio » Tue Jun 25, 2019 3:46 pm

Gracias José por tu sugerencia, he visto con un solo campo de fecha, como sería con dos ? Desde ya muchas gracias.

Saludos
horacio
 
Posts: 1363
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: filtro entre fechas

Postby joseluisysturiz » Tue Jun 25, 2019 3:51 pm

horacio wrote:Gracias José por tu sugerencia, he visto con un solo campo de fecha, como sería con dos ? Desde ya muchas gracias.

Saludos


Si vas usar 2 campos de fechas para tomar 2 rangos de fechas metes entre parentesis las validaciones, te lo coloco para que lo pruebes, ya que nunca he necesitado usar 2 fechas entre rangos, pero la logica seria algo asi...saludos... :shock:

Code: Select all  Expand view  RUN

SELECT column_name(s)
FROM table_name
WHERE ( column_name1 BETWEEN value1 AND value2 ) AND/OR ( column_name2 BETWEEN value1 AND value2 )
 
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: filtro entre fechas

Postby gmart1 » Tue Jun 25, 2019 5:18 pm

Hola, creo que valdría :

( desde <= hasta1 and hasta >= desde1 )

Un saludo.
gmart1
 
Posts: 80
Joined: Wed Oct 24, 2007 12:48 pm
Location: Alhaurin de la Torre (MALAGA)

Re: filtro entre fechas

Postby joseluisysturiz » Tue Jun 25, 2019 5:30 pm

gmart1 wrote:Hola, creo que valdría :

( desde <= hasta1 and hasta >= desde1 )

Un saludo.


Con lo que dices no entiendo lo que quieres hacer, si lo que quieres es tomar en cuenta 2 fechas que esten entre un rango incluidas las fechas tomadas, con lo que te puse funciona, pero de verdad ya no se que es lo que quieres, me perdi...saludos...gracias... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: filtro entre fechas

Postby horacio » Tue Jun 25, 2019 5:36 pm

José, parece que los tiros van por between. Haré unas pruebas y te comento. Gracias

Saludos
horacio
 
Posts: 1363
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: filtro entre fechas

Postby joseluisysturiz » Tue Jun 25, 2019 5:42 pm

horacio wrote:José, parece que los tiros van por between. Haré unas pruebas y te comento. Gracias

Saludos

Fue lo que te sugeri desde un principio, gracias... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: filtro entre fechas

Postby Armando » Tue Jun 25, 2019 7:07 pm

Amigos:

Lo que yo entendí es que no se trata de un rango de fechas, para ejemplificar lo que entendí,
supongamos que son campos con nombres, ejemplo:

José Ramírez
Horacio Rocha

Entonces lo que quiere es traer los registros de Horacio Rocha.

Nombre = "Horacio" .AND. Paterno = "Rocha"

Es así?

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3229
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: filtro entre fechas

Postby horacio » Wed Jun 26, 2019 12:01 am

Armando, Los registros pertenecen a una tabla de licencias. poseen dos campos: "desde" y "hasta" que me indican la duración de la licencia. supongamos que tengo un registro de la siguiente manera:

Registro:
Code: Select all  Expand view  RUN

desde = '2019-05-18', hasta = '2019-05-28'
 


Si hago la siguiente consulta:
Code: Select all  Expand view  RUN

select * from licencias where desde >= "2019-05-20" and hasta <= "2019-05-26"
 

No obtendría el registro que definí al principio, sin embargo las fechas del where se encuentran dentro del rango del registro y eso es lo que necesitaría mostrar. Espero haber sido claro.

Saludos
horacio
 
Posts: 1363
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: filtro entre fechas

Postby nageswaragunupudi » Wed Jun 26, 2019 3:45 am

This query shows all licences valid during the full period from 2019-05-20 to 2019-05-26.
Code: Select all  Expand view  RUN

select * from licencias where desde <= '2019-05-20' and hasta >= '2019-05-26'
 


The next query shows all licences valid for atleast one day or more during the period from 2019-05-20 to 2019-05-26.
Code: Select all  Expand view  RUN

select * from licencias where desde <= "2019-05-26" and hasta >= "2019-05-20"
 
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10646
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: filtro entre fechas

Postby gmart1 » Wed Jun 26, 2019 6:21 am

Hola, creo que valdría :

( desde <= hasta1 and hasta >= desde1 )

Un saludo.


Esta solución es la misma que te indica Mr. Rao en el segundo caso, cuando quieres que algún día del rango esté dentro de desde1:hasta1.

Si lo que quieres es que el periodo desde:hasta esté dentro de desde1:hasta1, osea que sea un subperiodo, te valdría :

( desde >= desde1 and hasta <= hasta1 )

Es la primera solución de Mr. Rao, aunque creo que ha cometido un pequeño error en los operadores mayor y menor, los ha invertido.

Un saludo.
gmart1
 
Posts: 80
Joined: Wed Oct 24, 2007 12:48 pm
Location: Alhaurin de la Torre (MALAGA)


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Jimmy and 39 guests