Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Problema con consulta y timestamp

Estas en el tema de Problema con consulta y timestamp en el foro de PostgreSQL en Foros del Web. Hola, una pregunta sobre una consulta q no se como hacer. estoy cogiendo de un form las fechas de un calendario en javascript para recoger ...
  #1 (permalink)  
Antiguo 20/09/2011, 02:06
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Compostela
Mensajes: 126
Antigüedad: 12 años, 11 meses
Puntos: 0
Problema con consulta y timestamp

Hola, una pregunta sobre una consulta q no se como hacer. estoy cogiendo de un form las fechas de un calendario en javascript para recoger datos segun un intervalo de tiempo, el formato q rellena el input son del tipo 20110613 y quiero compararlas con las q tengo en una tabla en postgres, pero en postgres son tipo timestamp.
Código HTML:
<h3>Fecha Inicio</h3><INPUT type="text" name="date1" size="20" onfocus="doShow('datechooser1','datechooser','date1')" value="<?=$_POST['date1']?>"><br>
<div enabled='false' id="datechooser1"></div>
<h3>Fecha Final&nbsp;</h3><INPUT type="text" name="date2" size="20" onfocus="doShow('datechooser2','datechooser','date2')" value="<?=$_POST['date2']?>"><br>
<div enabled='false' id="datechooser2"></div> 
lo recojo en PHP y hago la consulta:
Código PHP:
$date1 $_POST['date1'];
echo 
"la fecha es" .$date1;
$date2 $_POST['date2'];
$query 'select id_haul, id_catch, shooting_time from "haul" natural inner join catch where a_code = \'$a_code\' and shooting_time between \'$date1\' and \'$date2\'';
$result pg_query($query) or die('Query failed: ' pg_last_error()); 
como seria la consulta? alguien puede ayudarme? gracias.
  #2 (permalink)  
Antiguo 22/09/2011, 10:55
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Problema con consulta y timestamp

Hola emeotero

En tu consulta a la BD reemplaza:
shooting_time
por
TO_DATE(shooting_time::text,'YYYYMMDD')


Con eso ya te debería funcionar.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 22/09/2011, 11:17
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Compostela
Mensajes: 126
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Problema con consulta y timestamp

Hola huesos52,

probaré este modo de hacerlo q me propones, gracias.

de todos modos creo q lo tengo solucionado del modo, digo q creo q lo tengo solucionado, pq tengo q comprobar q realmente el intervalo es valido, a ver, resolver resuelve la consulta: (respuesta del servidor)

select id_haul, id_catch, shooting_time, total_discarded_weight, ST_AsGeoJSON(geom, 4) AS geojson from "haul" natural inner join catch where a_code in ( 'HKE') and shooting_time between '20110912' and (timestamp '20110914' + interval '1 days') pongo + interval 1 days para q me coja el ultimo dia, sino pasa de mi.

pero tengo q testarla bien con datos reales pq estoy trabajando con tablas de prueba:

le pongo la comilla a cada una de las fechas para poder hacer la cadena completa junto con los datos de las especies q recibo del form, proceso ya en javascript para no saturar el servidor. del form me traigo una cadena del tipo:

#'cadena1'#'cadena2'...#'cadenaN'... sustituyo el # por comas y despues compongo la cadena completa:

$date1 = "'".$_POST['date1']."'";
$date2 = "'".$_POST['date2']."'";
$especies_procesar = $_POST['especies'];
if($especies_procesar[0] == '#') $especies_procesar[0] = ' '; //Elimina el primer #
$especies_procesar = str_replace("#",",",$especies_procesar);


en lugar de hacer esta parte de arriba con el string, tengo q probar a usar en la consulta:

where a_code in ('.ltrim($especies_procesar,',').')

a lo mejor queda mas elegante, no?

la consulta final, sin los cambios del ltrim, y q me devuelve valores:

$query = "select id_haul, id_catch, shooting_time, total_discarded_weight, ST_AsGeoJSON(geom, 4) AS geojson from \"haul\" natural inner join catch where a_code in (".$especies_procesar.") and shooting_time between ".$date1." and (timestamp ".$date2." + interval '1 days')";

gracias de nuevo, da gusto encontrarte personas q dedican tiempo a resolver dudas a los q no sabemos, espero algun dia yo tb ser uno de ellos.
  #4 (permalink)  
Antiguo 23/09/2011, 06:04
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Problema con consulta y timestamp

Me alegra que lo hayas resuleto por tu parte.
Pero creo que le das demasiadas vueltas a un problema simple.
te di una respuesta desde postgresql porque estamos en este foro, pero también pudiste haber tratado desde php dicho valor y dejar la consulta como la tienes en un principio.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: dato, fecha, java, postgres, timestamp
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:29.