Foros del Web » Programando para Internet » PHP »

Problemas comparacion de fechas

Estas en el tema de Problemas comparacion de fechas en el foro de PHP en Foros del Web. Hola, amigos tengo el siguiente problema: saco datos (entre ellos fechas tipo datetime(null))de una tabla de la base de datos (vTraficoIrregularCyD) y tengo que compararlos(entre ...
  #1 (permalink)  
Antiguo 11/02/2009, 04:27
 
Fecha de Ingreso: diciembre-2008
Mensajes: 21
Antigüedad: 15 años, 4 meses
Puntos: 0
Problemas comparacion de fechas

Hola, amigos tengo el siguiente problema: saco datos (entre ellos fechas tipo datetime(null))de una tabla de la base de datos (vTraficoIrregularCyD) y tengo que compararlos(entre estas comparaciones tambien fechas de tipo datetime(not null)) con los datos de otra tabla(terminalesC_tx_spool), para comparar las fechas lo hago sacando el timestamp de las fechas ya que me parece lo mas logico, aunque tambien he probado con convert y no he conseguido nada, este es mi codigo:


<?php

include('functions.php');


//Conexión con la base de datos

Conectarse();

$term = mssql_query("SELECT * FROM vTraficoIrregularCyD WHERE [Id Terminal] = 1515");


//Empezamos si existen terminales en la vista

while($linea=mssql_fetch_array($term)){


//Empezamos si existen terminales C en la vista

if($linea['tipo']=4){


//Guardo variables que me harán falta

$idtc =$linea['Id Terminal'];
$intc = $linea['Intervalo programado'];
$emitidos = $linea['Mensajes Emitidos'];
$teoricos = $linea['Mensajes Teoricos'];
$desvio = $emitidos - $teoricos;
$inicio = strtotime ($linea['Fecha Inicio']);
$fin = strtotime ($linea['Fecha Fin']);



//De la tabla terminalesC_tx_spool

$spool = mssql_query("SELECT * FROM terminalesC_tx_spool WHERE commandtype = 00 AND id_terminal=".$idtc);

while($linea1=mssql_fetch_array($spool)){

$fecha = strtotime($linea1['fecha']);



$polls = mssql_query("SELECT COUNT (terminalesC_tx_spool.commandtype)
FROM terminalesC_tx_spool
WHERE terminalesC_tx_spool.commandtype = 00
AND terminalesC_tx_spool.id_terminal=".$idtc.
" AND " .$fecha. " between " .$inicio. "and" .$fin);

echo"$polls";


}//while
}//if
}//WHILE

Desconectarse();
?>



Y este el error que me da:

Warning: mssql_query() [function.mssql-query]: message: Incorrect syntax near the keyword 'between'. (severity 15) in C:\wamp\www\practicas\hoy\pruebasSTRTOTIME.php on line 49

Warning: mssql_query() [function.mssql-query]: Query failed in C:\wamp\www\practicas\hoy\pruebasSTRTOTIME.php on line 49



Entiendo que debe haber un error al comparar las fechas, pero llevo 3 dias cambiando cosas y probando otras funciones como convert, y no he conseguido nada, si alguien puede ayudarme me seria de gran ayuda.Gracias
  #2 (permalink)  
Antiguo 11/02/2009, 06:13
Avatar de fermar21  
Fecha de Ingreso: marzo-2004
Ubicación: San Nicolas - Bs. As.
Mensajes: 294
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: Problemas comparacion de fechas

Deja un espacio a los costados del "and" al lado del between. O sea " and "

Saludos,
__________________
Fernando Marinzulich
Programador Web (PHP/MySQL/Jquery)
  #3 (permalink)  
Antiguo 11/02/2009, 06:49
 
Fecha de Ingreso: diciembre-2008
Mensajes: 21
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Problemas comparacion de fechas

Fermar ya he probado lo que dices pero sigue dandome error, creo que el problema no esta en la sintaxis, sino en la comparación de las fechas, a ver si alguien puede ayudarme, gracias.
  #4 (permalink)  
Antiguo 11/02/2009, 06:52
Avatar de fermar21  
Fecha de Ingreso: marzo-2004
Ubicación: San Nicolas - Bs. As.
Mensajes: 294
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: Problemas comparacion de fechas

Las tres fechas estan en el mismo formato ($fecha, $inicio y $fin)? AAAA-MM-DD
Si son iguales, intenta ponerle comillas simples a las fecha 'AAAA-MM-DD'
__________________
Fernando Marinzulich
Programador Web (PHP/MySQL/Jquery)
  #5 (permalink)  
Antiguo 11/02/2009, 07:03
 
Fecha de Ingreso: diciembre-2008
Mensajes: 21
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Problemas comparacion de fechas

Pero comillas simples donde? porque yo las saco de tablas de la base de datos de tipo datetime AAAA-MM-DD H:i:s.u

Gracias por tu ayuda
  #6 (permalink)  
Antiguo 11/02/2009, 07:05
Avatar de fermar21  
Fecha de Ingreso: marzo-2004
Ubicación: San Nicolas - Bs. As.
Mensajes: 294
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: Problemas comparacion de fechas

La ultima linea de la consulta te quedaria asi:
Código PHP:
" AND '" .$fecha"' between '" .$inicio"' and '" .$fin."'"); 
__________________
Fernando Marinzulich
Programador Web (PHP/MySQL/Jquery)
  #7 (permalink)  
Antiguo 12/02/2009, 02:14
 
Fecha de Ingreso: diciembre-2008
Mensajes: 21
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Problemas comparacion de fechas

No funciona Fermar, haciendo lo que tu dices me da el error:

Resource#6Resource#7Resource#8.................... .................................................. .................................................. .................................................. ......................................

No puede haber algun error en la comparacion de las fechas?

Gracias
  #8 (permalink)  
Antiguo 12/02/2009, 02:28
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problemas comparacion de fechas

Código php:
Ver original
  1. $inicio = strtotime ($linea['Fecha Inicio']);
  2. $fin = strtotime ($linea['Fecha Fin']);
  3.  
  4. // En la segunda consulta
  5. $fecha = strtotime($linea1['fecha']);

Estas usando timestamps para un campo datetime, lo cual ya me hace pensar en un error, tal vez debiera ser:
Código php:
Ver original
  1. $inicio = $linea['Fecha Inicio'];
  2. $fin = $linea['Fecha Fin'];
  3.  
  4. // En la segunda consulta
  5. $fecha = $linea1['fecha'];

Y otra cosa, $fecha en la consulta debiera ser un campo y no una variable:
Código php:
Ver original
  1. " AND fecha between '$inicio' AND '$fin'");
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 12/02/2009, 03:53
 
Fecha de Ingreso: diciembre-2008
Mensajes: 21
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Problemas comparacion de fechas

Hola Triby, he probado lo que dices, pero me da el error de resource, he probado tambien sin pasar las fechas ha ningun tipo de formato puesto que las dos tablas están en datetime pero entonces me da el siguiente error:


Warning: mssql_query() [function.mssql-query]: message: Line 4: Incorrect syntax near 'between9'. (severity 15) in C:\wamp\www\practicas\hoy\pruebasSTRTOTIME.php on line 49

Warning: mssql_query() [function.mssql-query]: Query failed in C:\wamp\www\practicas\hoy\pruebasSTRTOTIME.php on line 49

lo único que puedo pensar es que una de las tablas el tipo es datetime(null) y y la otra con la que la comparo es datetime(not null) aunque no se si tiene algo que ver, no creo...o algo en la sintaxis pero no se que hay mal...

No se pueden pasar fechas datetime a timestamp para compararlas, tu como lo harias?Gracias por tu ayuda.
  #10 (permalink)  
Antiguo 12/02/2009, 13:03
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problemas comparacion de fechas

Cita:
Warning: mssql_query() [function.mssql-query]: message: Line 4: Incorrect syntax near 'between9'. (severity 15)...9
Esto quiere decir que inmediatamente despues de between hay un numero que no debieria estar ahi; por favor muestra nuevamente todo tu codigo, usa la opcion de highlight para pegar tu codigo y que sea mas legible.

Edito:

MySQL convierte las fechas a Timestamp cuando se comparan en forma numerica (siempre entre comillas):
http://dev.mysql.com/doc/refman/5.0/en/using-date.html
__________________
- León, Guanajuato
- GV-Foto

Última edición por Triby; 12/02/2009 a las 13:23
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 23:05.