Foros del Web » Programando para Internet » PHP »

Problemas con dateadd

Estas en el tema de Problemas con dateadd en el foro de PHP en Foros del Web. Hola ejecuto el siguiente script: $Vistap=mssql_query( "SELECT tb.id_barco ,sdh.id_terminal ,terminales.identificador ,terminales.tipoterm ,terminales.intervalo ,barcos.nombre as barco ,clientes.nombre as cliente ,sdh.fecha_inicio as 'Fecha Inicio' ,sdh.fecha_fin as 'Fecha ...
  #1 (permalink)  
Antiguo 02/01/2009, 07:00
 
Fecha de Ingreso: diciembre-2008
Mensajes: 21
Antigüedad: 15 años, 4 meses
Puntos: 0
Problemas con dateadd

Hola ejecuto el siguiente script:

$Vistap=mssql_query( "SELECT tb.id_barco
,sdh.id_terminal
,terminales.identificador
,terminales.tipoterm
,terminales.intervalo
,barcos.nombre as barco
,clientes.nombre as cliente
,sdh.fecha_inicio as 'Fecha Inicio'
,sdh.fecha_fin as 'Fecha Fin'
,sdh.mensajes as 'Mensajes Emitidos'
,sdh.teorico as 'Mensajes Teoricos'
,sdh.desvio
,terminalesC_DNID.dnid
,terminalesC_DNID.miembro
,terminalesC_DNID.email
,terminalesC_tx_spool.commandtype
,terminalesC_tx_spool.estado
,terminalesC_tx_spool.fecha

FROM status_datareporting_historico as sdh
INNER JOIN terminales_barcos as tb ON sdh.id_terminal=tb.id_terminal
INNER JOIN terminales
ON sdh.id_terminal=terminales.id
LEFT JOIN barcos
ON tb.id_barco=barcos.id
LEFT JOIN clientes_barcos as cb
ON tb.id_barco=cb.id_barco
LEFT JOIN clientes
ON cb.id_cliente=clientes.id
LEFT JOIN terminalesC_DNID
ON clientes.id=terminalesC_DNID.id_terminal
LEFT JOIN terminalesC_tx_spool
ON clientes.id=terminalesC_tx_spool.id_terminal
WHERE tipoterm = 4 and desvio > 120
and (terminalesC_tx_spool.commandtype = 04
or terminalesC_tx_spool.commandtype = 05)
and sdh.fecha_fin >= DATEADD(day, -1, GETDATE())
and terminalesC_tx_spool.fecha >= DATEADD(day, -3, GETDATE())");


y no me cumple la última condición terminalesC_tx_spool.fecha... en cambio cuando selecciono sólo de la tabla terminalesC_tx_spool con esa condición si que la saca por pantalla correctamente, no se si ocurre que al estar usando otro campo con fecha (sdh.fecha_fin) no sirve la función dateadd o hay algun problema con que los tipos de campo de la tablas sdh.fecha (null) y terminalesC_tx_spool (not null) sean diferentes, ó es que no puedo usar en este caso LEFT JOIN (aunque he usado tambien INNER y RIGHT JOIN), no se no encuentro una solución.

si alguién sabe cuál puede ser el problema me sería de gran ayuda.Gracias
  #2 (permalink)  
Antiguo 02/01/2009, 09:23
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Problemas con dateadd

Has intentado esto?
Código php:
Ver original
  1. $sql = "SELECT tb.id_barco,
  2.             sdh.id_terminal,
  3.             terminales.identificador
  4.             terminales.tipoterm
  5.             terminales.intervalo
  6.             barcos.nombre as barco
  7.             clientes.nombre as cliente
  8.             sdh.fecha_inicio as 'Fecha Inicio'
  9.             sdh.fecha_fin as 'Fecha Fin'
  10.             sdh.mensajes as 'Mensajes Emitidos'
  11.             sdh.teorico as 'Mensajes Teoricos'
  12.             sdh.desvio
  13.             terminalesC_DNID.dnid
  14.             terminalesC_DNID.miembro
  15.             terminalesC_DNID.email
  16.             terminalesC_tx_spool.commandtype
  17.             terminalesC_tx_spool.estado
  18.             terminalesC_tx_spool.fecha
  19.         FROM status_datareporting_historico as sdh
  20.             INNER JOIN terminales_barcos as tb ON sdh.id_terminal=tb.id_terminal
  21.             INNER JOIN terminales ON sdh.id_terminal=terminales.id
  22.             LEFT JOIN barcos ON tb.id_barco=barcos.id
  23.             LEFT JOIN clientes_barcos as cb ON tb.id_barco=cb.id_barco
  24.             LEFT JOIN clientes ON cb.id_cliente=clientes.id
  25.             LEFT JOIN terminalesC_DNID ON clientes.id=terminalesC_DNID.id_terminal
  26.             LEFT JOIN terminalesC_tx_spool ON clientes.id=terminalesC_tx_spool.id_terminal
  27.         WHERE tipoterm = 4 and desvio > 120
  28.         AND (terminalesC_tx_spool.commandtype = 04
  29.             OR terminalesC_tx_spool.commandtype = 05)
  30.         AND sdh.fecha_fin >= DATEADD(day, -1, GETDATE())
  31.         AND terminalesC_tx_spool.fecha >= DATEADD(day, -3, GETDATE())";
  32. $Vistap= mssql_query($sql) or die("Consulta SQL: <br>".$sql."<br>Error: ".mysql_error());

Asi podras ver que es lo que esta interpretando php antes de enviar la consulta y el error (en caso de existir alguno)

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
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 02:08.