Page 1 of 1

filtro entre fechas

PostPosted: Tue Jun 25, 2019 1:26 pm
by horacio
Colegas, trabajo con Mysql y necesitaría hacer una consulta de la siguiente manera:

Registro
Code: Select all  Expand view

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


condición consulta
Code: Select all  Expand view

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

Re: filtro entre fechas

PostPosted: Tue Jun 25, 2019 2:48 pm
by Armando
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

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

desde1 => desde .AND. hasta1 <= hasta
 


Saludos

Re: filtro entre fechas

PostPosted: Tue Jun 25, 2019 3:24 pm
by horacio
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

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

Re: filtro entre fechas

PostPosted: Tue Jun 25, 2019 3:38 pm
by joseluisysturiz
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

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

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2
 

Re: filtro entre fechas

PostPosted: Tue Jun 25, 2019 3:43 pm
by Armando
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

Re: filtro entre fechas

PostPosted: Tue Jun 25, 2019 3:46 pm
by horacio
Gracias José por tu sugerencia, he visto con un solo campo de fecha, como sería con dos ? Desde ya muchas gracias.

Saludos

Re: filtro entre fechas

PostPosted: Tue Jun 25, 2019 3:51 pm
by joseluisysturiz
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

SELECT column_name(s)
FROM table_name
WHERE ( column_name1 BETWEEN value1 AND value2 ) AND/OR ( column_name2 BETWEEN value1 AND value2 )
 

Re: filtro entre fechas

PostPosted: Tue Jun 25, 2019 5:18 pm
by gmart1
Hola, creo que valdría :

( desde <= hasta1 and hasta >= desde1 )

Un saludo.

Re: filtro entre fechas

PostPosted: Tue Jun 25, 2019 5:30 pm
by joseluisysturiz
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:

Re: filtro entre fechas

PostPosted: Tue Jun 25, 2019 5:36 pm
by horacio
José, parece que los tiros van por between. Haré unas pruebas y te comento. Gracias

Saludos

Re: filtro entre fechas

PostPosted: Tue Jun 25, 2019 5:42 pm
by joseluisysturiz
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:

Re: filtro entre fechas

PostPosted: Tue Jun 25, 2019 7:07 pm
by Armando
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

Re: filtro entre fechas

PostPosted: Wed Jun 26, 2019 12:01 am
by horacio
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

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


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

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

Re: filtro entre fechas

PostPosted: Wed Jun 26, 2019 3:45 am
by nageswaragunupudi
This query shows all licences valid during the full period from 2019-05-20 to 2019-05-26.
Code: Select all  Expand view

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

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

Re: filtro entre fechas

PostPosted: Wed Jun 26, 2019 6:21 am
by gmart1
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.