MySQL - Consulta con 2 Fechas

 
Vista:

Consulta con 2 Fechas

Publicado por Carlos Ulloa (2 intervenciones) el 04/12/2015 16:36:59
Tengo una tabla llamada mandsect, cuyos campos son muchos, pero hay 2 en particular que son fec_ter y fec_ter_ext (Fecha de Término y Fecha de Término Extendido).

Al ingresar el año en php, me debiera listar los registros que estén dentro de ese año.

Por ejemplo si ingreso el año 2015, me debe entregar los registros de los proyectos que terminaron entre 2015-01-01 y 2015-12-31.

El problema es que un proyecto siempre tiene una fecha de término, pero puede o no tener una fecha de término extendida y si no la tiene, por defecto queda con la fecha 0000-00-00.

Cuando hago la consulta de cuantos proyectos han terminados el año 2015 no se como saber si la fecha de termino extendida es distinta de 0000-00-00 para considerarla o no, sino considerar solo la fecha de término.


Por ejemplo un registro:

Caso 1:

id, nombre, fec_ter, fec_ter_ext: 01, "Proyecto 1" , 2014-08-21, 2015-03-14

como hago la consulta para saber si este proyecto terminó el año 2015


Caso 2:

id, nombre, fec_ter, fec_ter_ext: 02, "Proyecto 2", 2015-03-21, 0000-00-00

como hago la consulta para saber si este proyecto terminó el año 2015
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
sin imagen de perfil
Val: 23
Ha aumentado 1 puesto en MySQL (en relación al último mes)
Gráfica de MySQL

Consulta con 2 Fechas

Publicado por Juan R. (25 intervenciones) el 06/12/2015 02:16:32
Buenas Carlos

No me quedó muy clara de todo tu duda, pero quizás lo que necesites sea algo así:

SELECT *
FROM tu_tabla t
WHERE YEAR(t.fec_ter) = 2015 AND YEAR(t.fec_ext) = 2015


No sé, si es lo que buscabas.

Un saludo
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

Consulta con 2 Fechas

Publicado por Carlos Ulloa (2 intervenciones) el 07/12/2015 05:11:14
Lo que tengo es que un formulario recibo el año y luego en php creo 2 variables y hago la consulta

1
2
3
4
5
6
7
8
<?php
$fecini=$_POST['anno']."-01-01";
$fecfin=$_POST['anno']."-12-31";
$con=mysqli_connect("localhost","root","pass","BD");
$dat="SELECT * from mandsect where fec_ter>='$fecni' and fec_ter<='$fecfin'";
$sql=mysqli_query($con,$dat);
...
?>

El problema es que la fecha de termino (fec_ter) siempre tiene un valor distinto de 0000-00-00 , pero la fecha de termino extendido (fec_ter_ext) a veces tiene un valor (que siempre es una fecha mayor que fec_ter), sino toma el valor 0000-00-00.

Como puedo hacer la consulta: si la fecha de termino extendido (fec_ter_ext) es distinto de 0000-00-00 haga la consulta con la fecha de termino extendido, sino la hago con la fecha de termino (fec_ter), ambos campos pertenecen a la tabla mandsect.

no se como colocar esa condición en un solo select, ya que existen cientos de registros
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
sin imagen de perfil
Val: 23
Ha aumentado 1 puesto en MySQL (en relación al último mes)
Gráfica de MySQL

Consulta con 2 Fechas

Publicado por Juan R. (25 intervenciones) el 07/12/2015 16:57:02
Buenas de nuevo Carlos

Se me ha ocurrido que uses IF en tu consulta SQL, quizás en el foro de lenguaje SQL te puedan ayudar mejor, pero a mí así a bote pronto, se me ocurre que puedes hacer lo siguiente

SELECT IF(t.fec_ter_ext > 0000-00-00; t.fec_ter_ext;t.fec_ent) as t.fecha_extendida, {resto de campos de la consulta}
FROM mandsect t
WHERE t.fec_ter>='$fecni' AND fec_ter<='$fecfin'


Prueba y mira a ver si te sirve, si no prueba a pedir ayuda en el foro de SQL y en el de PHP

Un saludo
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

Consulta con 2 Fechas

Publicado por wences (1 intervención) el 07/12/2015 17:09:08
SELECT *
FROM tu_tabla t
WHERE YEAR(t.fec_ter) = 2015 or YEAR(t.fec_ext) = 2015

Con esto elegirá todas las que su fecha sea 2015 en cualquiera de las 2 fechas ... con lo que devolvería los 2 casos anteriores ..
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