Problemas con Fechas en un Stored Procedure

Me llamo Jorge, soy de Buenos Aires, te molesto por lo siguiente :
Estoy trabajando con SQL 2000 y en un Stored Procedure tengo el siguiente síntoma :
estoy haciendo un select de varias tablas , el SP recibe dos parametros uno de tipo int y otro de tipo DateTime
El tema es que un par de veces me anduvo ok y de repente dejo de andar, me copie el código del SP en un Query Analyzer y le declare ambas variables y les setee valores y al correrlo me tira los registros que espero y que desde el SP no los devuelve, preobe también de declararles las variables dentro del SP obviando los parámetros y tampoco devuelve nada, en el where del select esta puesto como :
where PagFecha <= @PrmFechaHasta , probe tambien de ponerle un Convert(datetime,@PrmFechaHasta,103) y lo mismo, bueno espero haberte dado los datos suficientes y ver que se puede hacer.

2 respuestas

Respuesta
1
Según lo que me comentas, tienes una diefrencia entre las configuraciones regionales de tu maquina y la del servidor (supongo que lo probaste con el QA es en tu maquina)..
El tema que cuando lo ejecutas desde el query Analyzer estas tomando la configuración local y cuando lo ejecutas con exec se ejecuta en el servidor con otras configuraciones.
Esto podes verlo haciendo el cambio siguiente:
En el Query analyzer ->Herramientas -> Opciones ->Conexiones -> Tildar usar configuraciones regionales
Pruébalo así, y chequea que las configuraciones regionales ean la misma en la maquina que anda que en la que no funciona.
Avisame si no podes solucionar el error que entonces si, trabajamos en los datos.
Lo pude solucionar revisando la sintaxis del SP y sacando código que era inocuo, pero lo que me comentas no lo sabia y lo tendré muy en cuenta para el futuro, desde ya muchas gracias
Respuesta
1
¿Cómo estás?
Aunque me hubiera gustado haber visto algo más del procedimiento almacenado, por lo que me cuentas, creo que el problema estriba en el parámetro datetime que recibes.
Yo he tenido muchas veces problemas similares a los tuyos cuando declaraba parámetros datetime en el procedimiento almacenado. Mi consejo es que no los utilices y en su lugar, esperes recibir un varchar(n).
Dentro podrás hacer el convert a datetime (convert(datetime, @var, 103) si quieres o incluso operar con ese varchar, porque él hará la conversión implícitamente.
Incluso desde fuera, la llamada, la puedes hacer sin convert, pasándole la fecha tal cual en formato datetime, aunque, lógicamente es más elegante con los convert y el formato que prefieres, pero ya te digo, yo cambiaría ese parámetro datetime por un varchar(n)
Coméntame cómo te ha ido con esto y si sigues teniendo problemas, escribes algo del código.
Lo pude solucionar por el momento sacando un where de un select anidado y me anda, pero para el futuro voy a tener en cuenta tu respuesta que no lo tenia tan claro, desde ya muchísimas gracias
Me acabo de acordar, otra técnica muy recomendable, es que utilices siempre el mismo formato de fecha, fuera y dentro del procedimiento. Para ello utiliza el SET DATEFORMAT YMD o el que a ti te interese.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas