Problema con SP y fecha en formato ansi (yyyymmdd).

21/03/2005 - 11:01 por José Antonio | Informe spam
He leido el articulo de maxi sobre como utilizar las fechas en formato ansi
para estandarizar todas las consultas.

Cuando esto se utiliza desde el analizador y se ponen las consultas a mano
tipo fecha='20040310', no hay ningun problema, pero si se utilizan
procedimientos almacenados con parametros datetime, yo tengo problemas y
supongo que es porque lo estoy haciendo mal.

Tengo un SP con tres parametros, 2 son varchar y 1 datetime.
Desde c#, añado los parametros antes de llamar al SP y en el datetime lo
hago de la manera siguiente parametro.Value='20040310',
parametro.DbType=DbType.DateTime, parametro.SqlDbType=SqlDbType.DateTime.

Cuando ejecuto el Sp me da el siguiente error No se puede reconocer la
cadena como valor DateTime válido.

¿Donde está el fallo?

Saludos.

Preguntas similare

Leer las respuestas

#1 Carlos Sacristán
21/03/2005 - 11:09 | Informe spam
Creo que eso es más problema de cómo C# interpreta esos datos que de SQL
Server. Pregunta en ese foro, a ver si te dan una respuesta más válida


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"José Antonio" escribió en el
mensaje news:
He leido el articulo de maxi sobre como utilizar las fechas en formato


ansi
para estandarizar todas las consultas.

Cuando esto se utiliza desde el analizador y se ponen las consultas a mano
tipo fecha='20040310', no hay ningun problema, pero si se utilizan
procedimientos almacenados con parametros datetime, yo tengo problemas y
supongo que es porque lo estoy haciendo mal.

Tengo un SP con tres parametros, 2 son varchar y 1 datetime.
Desde c#, añado los parametros antes de llamar al SP y en el datetime lo
hago de la manera siguiente parametro.Value='20040310',
parametro.DbType=DbType.DateTime, parametro.SqlDbType=SqlDbType.DateTime.

Cuando ejecuto el Sp me da el siguiente error No se puede reconocer la
cadena como valor DateTime válido.

¿Donde está el fallo?

Saludos.


Respuesta Responder a este mensaje
#2 Gustavo Larriera [MVP]
21/03/2005 - 13:13 | Informe spam
Asigna el valor del parametro fecha en un tipo Date de .NET, no en un
string.

Gustavo Larriera
Uruguay LatAm
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Blog: http://sqljunkies.com/weblog/gux/
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and
confers no rights.



"José Antonio" wrote in message
news::

He leido el articulo de maxi sobre como utilizar las fechas en formato ansi
para estandarizar todas las consultas.

Cuando esto se utiliza desde el analizador y se ponen las consultas a mano
tipo fecha='20040310', no hay ningun problema, pero si se utilizan
procedimientos almacenados con parametros datetime, yo tengo problemas y
supongo que es porque lo estoy haciendo mal.

Tengo un SP con tres parametros, 2 son varchar y 1 datetime.
Desde c#, añado los parametros antes de llamar al SP y en el datetime lo
hago de la manera siguiente parametro.Value='20040310',
parametro.DbType=DbType.DateTime, parametro.SqlDbType=SqlDbType.DateTime.

Cuando ejecuto el Sp me da el siguiente error No se puede reconocer la
cadena como valor DateTime válido.

¿Donde está el fallo?

Saludos.
Respuesta Responder a este mensaje
#3 José Antonio
21/03/2005 - 14:06 | Informe spam
Pero entonces ya no se pueden utilizar las fechas en formato ansi como dice
maxi en su articulo.

"Gustavo Larriera [MVP]" escribió en el mensaje
news:
Asigna el valor del parametro fecha en un tipo Date de .NET, no en un
string.

Gustavo Larriera
Uruguay LatAm
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Blog: http://sqljunkies.com/weblog/gux/
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.



"José Antonio" wrote in message
news::

He leido el articulo de maxi sobre como utilizar las fechas en formato
ansi
para estandarizar todas las consultas.

Cuando esto se utiliza desde el analizador y se ponen las consultas a
mano
tipo fecha='20040310', no hay ningun problema, pero si se utilizan
procedimientos almacenados con parametros datetime, yo tengo problemas y
supongo que es porque lo estoy haciendo mal.

Tengo un SP con tres parametros, 2 son varchar y 1 datetime.
Desde c#, añado los parametros antes de llamar al SP y en el datetime lo
hago de la manera siguiente parametro.Value='20040310',
parametro.DbType=DbType.DateTime, parametro.SqlDbType=SqlDbType.DateTime.

Cuando ejecuto el Sp me da el siguiente error No se puede reconocer la
cadena como valor DateTime válido.

¿Donde está el fallo?

Saludos.



Respuesta Responder a este mensaje
#4 Alejandro Mesa
21/03/2005 - 14:43 | Informe spam
José Antonio,

La mejor forma de corroborar lo que dices es la siguiente, asignale al
parametro un valor de tipo DateTime para que .net no te de error, pues asi
estas declarando el parametro. Usa "SQL Profiler" para ver como .NET hace la
llamada al procedimiento y como le pasa los valores (en que formato), asi
podremos saber que formato usa .NET en este caso.

La otra opcion es declarar los parametros tipo SqlDbType.VarChar (deja el sp
tal y como esta, el cambio es solo en tu aplicacion .net), con tamanio 8 y
pasar la fecha con el formato que tu deseas como una cadena, en este caso
AAAAMMDD.

Yo lo he hecho antes con ADO. Por ejemplo, si me conecto (usando vb6 y ado
2.8) a la bd "Northwind" y ejecuto el procedimiento "dbo.[Sales by Year]",
declarando los parametros de entrada como tipo adDBTimeStamp, y les asigno
los valores cdate("01/01/1998") y cdate("12/31/1998"), entonces ADO llama al
procedimiento de esta forma:

exec dbo.[Sales by Year] 'Jan 1 1998 12:00:00:000AM', 'Dec 31 1998
12:00:00:000AM'

si cambio la definicion de los parametros de entrada a adVarChar con tamanio
8 y les asigno la cadena "19980101" y "19981231", entonces ADO llama al
procedimiento de la forma:

exec dbo.[Sales by Year] '19980101', '19981231'


AMB

"José Antonio" wrote:

Pero entonces ya no se pueden utilizar las fechas en formato ansi como dice
maxi en su articulo.

"Gustavo Larriera [MVP]" escribió en el mensaje
news:
> Asigna el valor del parametro fecha en un tipo Date de .NET, no en un
> string.
>
> Gustavo Larriera
> Uruguay LatAm
> MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
> Blog: http://sqljunkies.com/weblog/gux/
> Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
> derecho / This posting is provided "AS IS" with no warranties, and confers
> no rights.
>
>
>
> "José Antonio" wrote in message
> news::
>
>> He leido el articulo de maxi sobre como utilizar las fechas en formato
>> ansi
>> para estandarizar todas las consultas.
>>
>> Cuando esto se utiliza desde el analizador y se ponen las consultas a
>> mano
>> tipo fecha='20040310', no hay ningun problema, pero si se utilizan
>> procedimientos almacenados con parametros datetime, yo tengo problemas y
>> supongo que es porque lo estoy haciendo mal.
>>
>> Tengo un SP con tres parametros, 2 son varchar y 1 datetime.
>> Desde c#, añado los parametros antes de llamar al SP y en el datetime lo
>> hago de la manera siguiente parametro.Value='20040310',
>> parametro.DbType=DbType.DateTime, parametro.SqlDbType=SqlDbType.DateTime.
>>
>> Cuando ejecuto el Sp me da el siguiente error No se puede reconocer la
>> cadena como valor DateTime válido.
>>
>> ¿Donde está el fallo?
>>
>> Saludos.
>



Respuesta Responder a este mensaje
#5 Maxi
21/03/2005 - 15:19 | Informe spam
Hola Jose, aca tienes algunas opciones

1) Adentro del SP conviertes el datetime a varchar y con formato ansi
2) Usas parametros varchar y envias ya el dato en ANSI




Salu2
Maxi


"José Antonio" escribió en el
mensaje news:
He leido el articulo de maxi sobre como utilizar las fechas en formato
ansi para estandarizar todas las consultas.

Cuando esto se utiliza desde el analizador y se ponen las consultas a mano
tipo fecha='20040310', no hay ningun problema, pero si se utilizan
procedimientos almacenados con parametros datetime, yo tengo problemas y
supongo que es porque lo estoy haciendo mal.

Tengo un SP con tres parametros, 2 son varchar y 1 datetime.
Desde c#, añado los parametros antes de llamar al SP y en el datetime lo
hago de la manera siguiente parametro.Value='20040310',
parametro.DbType=DbType.DateTime, parametro.SqlDbType=SqlDbType.DateTime.

Cuando ejecuto el Sp me da el siguiente error No se puede reconocer la
cadena como valor DateTime válido.

¿Donde está el fallo?

Saludos.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida