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

EXECUTE SP_EXECUTESQL error al convertir una cadena a smalldatetime

Estas en el tema de EXECUTE SP_EXECUTESQL error al convertir una cadena a smalldatetime en el foro de SQL Server en Foros del Web. Hola compañeros, Quisiera aprovechar sus conocimientos y que me den una ayuda por favor con este error que se me presenta: El asunto es que ...
  #1 (permalink)  
Antiguo 18/03/2013, 15:49
 
Fecha de Ingreso: octubre-2009
Ubicación: Guapiles
Mensajes: 11
Antigüedad: 14 años, 7 meses
Puntos: 0
EXECUTE SP_EXECUTESQL error al convertir una cadena a smalldatetime

Hola compañeros,

Quisiera aprovechar sus conocimientos y que me den una ayuda por favor con este error que se me presenta:

El asunto es que tengo una tabla donde quiero enviar unos datos ejecutando un query dinamico con EXECUTE SP_EXECUTESQL, pero estoy teniendo problemas con los valores smalldatetime.

digamos por ejemplo que la tabla es la tabla_prueba que tiene como campos:
  • id (int)
  • descripcion (varchar(100))
  • fecha (smalldatetime)

Para llenarla utilizo lo siguiente:

Declaro unas variables:

Código:
DECLARE @FECHA			NVARCHAR(MAX);
DECLARE @CADENA  		NVARCHAR(MAX);
DECLARE @QUERY			NVARCHAR(MAX);
DECLARE @QUERY_ENC		NVARCHAR(MAX);
DECLARE @QUERY_FINAL		NVARCHAR(MAX);
DECLARE @PARAMETROS		NVARCHAR(MAX);
Establezco unos valores:

Código:
SET @FECHA		= NULL
SET @CADENA     	= 'HOLA MUNDO'
Les comento que también he probado con GETDATE() y obtengo el mismo resultado.

Luego armo los querys:

Código:
SET @QUERY_ENC = 'INSERT INTO CC_PRUEBAS SELECT '

SET @QUERY = @CADENA + ', 1, ' + @FECHA

SET @QUERY_FIN = @QUERY_ENC + @QUERY

En esta parte también he intentado con 

SET @QUERY = @CADENA + ', 1, @FECHA'

SET @QUERY = @CADENA + ', 1, @FECHA'

SET @QUERY = @CADENA + ', 1, ' + cast(@FECHA as smalldatetime)
Y obtengo el mismo resultado.

Por ultimo establezco los parametros:

Código:
SET @PARAMETROS = N'@CADENA VARCHAR(MAX), @FECHA SMALLDATETIME';
Y ejecuto la instrucción:

Código:
EXECUTE SP_EXECUTESQL @QUERY_FIN,@PARAMETROS,@CADENA,@FECHA;
Y el resultado es el mismo:

"Conversion failed when converting character string to smalldatetime data type. SQL.sql 16 1 "

No he podido encontrar la manera de ejecución o armado correcto de este EXECUTE, por eso les pido ayuda con este problemita.

Gracias por su ayuda.
  #2 (permalink)  
Antiguo 19/03/2013, 05:10
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: EXECUTE SP_EXECUTESQL error al convertir una cadena a smalldatetime

1.
Cuando convertis fecha (DateTime) en cadena (Varchar) para armar una instrucción de SQL haz así:
Select @MiCadena=Convert(Varchar(Max),@MiFecha,112)

2.
Cuales son los valores que los parámetros @QUERY_FIN,@CADENA,@FECHA obtienen finalmente?
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #3 (permalink)  
Antiguo 20/03/2013, 08:30
 
Fecha de Ingreso: octubre-2009
Ubicación: Guapiles
Mensajes: 11
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: EXECUTE SP_EXECUTESQL error al convertir una cadena a smalldatetime

Hola.

En los bloques de código puse los valores para esos parámetros:

SET @FECHA = NULL
SET @CADENA = 'HOLA MUNDO'
--Les comento que también he probado con GETDATE() y obtengo el mismo resultado.

@QUERY_FIN se arma concatenando @QUERY_ENC y @QUERY, las cuales son:
SET @QUERY_ENC = 'INSERT INTO CC_PRUEBAS SELECT '
SET @QUERY = @CADENA + ', 1, ' + @FECHA

@QUERY tambien puede ser:
SET @QUERY = @CADENA + ', 1, @FECHA'
SET @QUERY = @CADENA + ', 1, @FECHA'
SET @QUERY = @CADENA + ', 1, ' + cast(@FECHA as smalldatetime)

Saludos,
  #4 (permalink)  
Antiguo 31/03/2013, 08:52
 
Fecha de Ingreso: febrero-2009
Mensajes: 312
Antigüedad: 15 años, 2 meses
Puntos: 4
Respuesta: EXECUTE SP_EXECUTESQL error al convertir una cadena a smalldatetime

Hola prueba con esto:

SET @FECHA = convert(varchar,getdate(),112)

Saludos
  #5 (permalink)  
Antiguo 31/03/2013, 09:59
 
Fecha de Ingreso: marzo-2013
Mensajes: 25
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: EXECUTE SP_EXECUTESQL error al convertir una cadena a smalldatetime

si estas usando la version SQL 2010 o 2012 yo siempre uso

FECHA DATE , -- esto solo me sirve en vez de poner smalldate o algo por l estilo ademas
--despues de crear la tabla solo el siguiente SET DATEFORMAT dmy;
-- y asi lo convierto en otro formato. espero que te sirva
  #6 (permalink)  
Antiguo 01/04/2013, 09:00
Avatar de leodp77  
Fecha de Ingreso: marzo-2013
Mensajes: 39
Antigüedad: 11 años, 1 mes
Puntos: 2
Respuesta: EXECUTE SP_EXECUTESQL error al convertir una cadena a smalldatetime

Estabas aplicando mal el stored procedure

Igual creo que es mas facil asi:

Código SQL:
Ver original
  1. IF EXISTS (SELECT * FROM sys.objects WHERE name = 'CC_PRUEBAS')
  2. TRUNCATE TABLE CC_PRUEBAS
  3. ELSE
  4. CREATE TABLE CC_PRUEBAS (Cadena VARCHAR(100), Fecha smalldatetime)
  5. --DROP TABLE CC_PRUEBAS
  6. GO
  7. DECLARE @FECHA          SMALLDATETIME;
  8. DECLARE @CADENA         NVARCHAR(MAX);
  9. DECLARE @QUERY          NVARCHAR(MAX);
  10. DECLARE @QUERY_ENC      NVARCHAR(MAX);
  11. DECLARE @QUERY_FINAL    NVARCHAR(MAX);
  12. DECLARE @PARAMETROS     NVARCHAR(MAX);
  13.  
  14. SET @FECHA      = GETDATE()
  15. SET @CADENA         = 'HOLA MUNDO'
  16.  
  17. SET @QUERY = 'INSERT INTO CC_PRUEBAS SELECT @CADENA,@FECHA'
  18.  
  19. SET @PARAMETROS = N'@CADENA NVARCHAR(MAX), @FECHA SMALLDATETIME';
  20.  
  21. EXECUTE SP_EXECUTESQL @QUERY,@PARAMETROS,@CADENA,@FECHA;
  22. SELECT @CADENA,@FECHA
  23.  
  24. SELECT * FROM CC_PRUEBAS
  25. GO
__________________
"La mejor forma de obtener información correcta de los foros de internet es enviar algo incorrecto y esperar las correcciones"
-- Matthew Austern

Etiquetas: cadena, campos, execute, select, sql, tabla
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 18:13.