Foros del Web » Programando para Internet » PHP »

Convertir string en fecha para filtrar

Estas en el tema de Convertir string en fecha para filtrar en el foro de PHP en Foros del Web. Buenas Tengo dos string Fecha1 y fecha2 con las que quiero hacer un filtro en mysql y estoy dando vueltas y siempre me da error. ...
  #1 (permalink)  
Antiguo 27/04/2019, 04:59
 
Fecha de Ingreso: junio-2007
Mensajes: 80
Antigüedad: 12 años, 1 mes
Puntos: 1
Convertir string en fecha para filtrar

Buenas

Tengo dos string Fecha1 y fecha2 con las que quiero hacer un filtro en mysql y estoy dando vueltas y siempre me da error.

Las cadenas son
Código:
$inicio = isset($_GET['fecha1'])? strval($_GET['fecha1']) : '';
$final  = isset($_GET['fecha2'])? strval($_GET['fecha2']) : '';
y la forma de hacer el filtro es:

Código:
	$pdf->Table('select DATE_FORMAT(fecha,"%d-%m-%y") AS fecha,expedi,consigna,domicilio,pobla,bultos,tipo,reembolso,observ from envio where codigo = "'.$contra.'" and almacen = "'.$almacen.'" and enviado = "S" and fecha BETWEEN $inicio AND $final');
El tema es que, claro, en la base de datos, fecha es tipo timestamp, y las variables inicio y final son tipo cadena, por lo que no puede compararse y tendria que convertir antes éstas cadenas.

Una ayuda

Saludos
  #2 (permalink)  
Antiguo 27/04/2019, 15:22
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.591
Antigüedad: 17 años, 3 meses
Puntos: 1274
Respuesta: Convertir string en fecha para filtrar

Hola:

¡Ejem!... muevo el mensaje al foro php desde el foro javascript...

Si crees que me he equivocado, reporta el mensaje para que lo remuevan.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 27/04/2019, 19:26
 
Fecha de Ingreso: abril-2006
Mensajes: 269
Antigüedad: 13 años, 2 meses
Puntos: 46
Respuesta: Convertir string en fecha para filtrar

Cita:
Iniciado por sotadeoros Ver Mensaje
Buenas

Tengo dos string Fecha1 y fecha2 con las que quiero hacer un filtro en mysql y estoy dando vueltas y siempre me da error.

Las cadenas son
Código:
$inicio = isset($_GET['fecha1'])? strval($_GET['fecha1']) : '';
$final  = isset($_GET['fecha2'])? strval($_GET['fecha2']) : '';
y la forma de hacer el filtro es:

Código:
	$pdf->Table('select DATE_FORMAT(fecha,"%d-%m-%y") AS fecha,expedi,consigna,domicilio,pobla,bultos,tipo,reembolso,observ from envio where codigo = "'.$contra.'" and almacen = "'.$almacen.'" and enviado = "S" and fecha BETWEEN $inicio AND $final');
El tema es que, claro, en la base de datos, fecha es tipo timestamp, y las variables inicio y final son tipo cadena, por lo que no puede compararse y tendria que convertir antes éstas cadenas.

Una ayuda

Saludos
luego por que hay webs hackeadas, bueno eso ya a futuro supongo que implementaras filtros para evitar inyecciones sql,

supongo que tu tabla de Mysql, esta ya con el campo DATETIME o DATE, asi que no es necesario que conviertas el string, basta con enviarle un ENTERO en tiempo UNIX segundos desde el año 1970, o bien enviarle la fecha con el formato que MYSQL espera recibir

asi que
Código PHP:
//https://www.php.net/manual/es/function.strtotime.php
$inicio = isset($_GET['fecha1'])? strval($_GET['fecha1']) : '0';
 
$timestamp_Segundos strtotime($inicio );
$final date("Y-m-d H:i:s"$timestamp_Segundos);
$inicio date("Y-m-d H:i:s"$timestamp_Segundos); 
en todo caso lo principal es que tu GET que tiene la fecha o tiempo debe estar en un formato que acepte la funcion "strtotime", una vez lo tengas asunto resuelto
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.me/pools/c/87BTML2gwr



La zona horaria es GMT -6. Ahora son las 14:01.