Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Visual Basic clásico (http://www.forosdelweb.com/f69/)
-   -   error en insert (http://www.forosdelweb.com/f69/error-insert-336635/)

lop7 26/09/2005 09:16

error en insert
 
Hola...
este es mi insert
insert into movimientos values(100,7,9749,9749,'2005-09-23')

este es el error que me da
The conversion of char data type to smalldatetime data type resulted in an out-of-range smalldatetime value.

y en la tabla lo tengo declarado smalldatetime los campos de fecha
uso SQL server

espero puedan ayudarme :arriba:

saludos
nos vemos...

David 26/09/2005 09:20

Cita:

Iniciado por lop7
Hola...
este es mi insert
insert into movimientos values(100,7,9749,9749,'2005-09-23')

este es el error que me da
The conversion of char data type to smalldatetime data type resulted in an out-of-range smalldatetime value.

y en la tabla lo tengo declarado smalldatetime los campos de fecha
uso SQL server

espero puedan ayudarme :arriba:

saludos
nos vemos...

Te está diciendo que la conversión del tipo "char" al tipo "smalldatetime" dió un out of range, o sea una inserción en Index de Matriz no válido, espero te ayude...

GeoAvila 26/09/2005 09:29

Cita:

Iniciado por lop7
Hola...
este es mi insert
insert into movimientos values(100,7,9749,9749,'2005-09-23')

este es el error que me da
The conversion of char data type to smalldatetime data type resulted in an out-of-range smalldatetime value.

y en la tabla lo tengo declarado smalldatetime los campos de fecha
uso SQL server

espero puedan ayudarme :arriba:

saludos
nos vemos...


insert into movimientos values(100,7,9749,9749,CONVERT(DATETIME,'2005-09-23', 102))


intenta asi.

lop7 26/09/2005 09:41

ok el problema es q usamos un template o modelo para hacer algunas rutinas entre esa esta el insert pero con los demas sitemas que tenemos no habia ocurrido nunca lo hace de maravilla pero ahora estoy trabajando en un sistema nuevo y el template me forma el string del insert como lo hace con lo demas pero cuando ejecuta ese estring me sale el error. y prove ese insert por el QUIERY ANALIZER y hace el insert perfecto no entiendo q pasa ...

otra cosa en que momento esta intentado convertir tipo "char" al tipo "smalldatetime" si lo tengo declarado como un smalldatetime. no entiendo

cuando va formando el strin el verifica el tipo d dato
If rec!Type = "smalldatetime" Then
strinsert = strinsert & "'" & Format(formfields(j, 3), "yyyy/mm/dd") & "'" & ","
end if

gracias

rgbarbieri 07/08/2009 08:45

Respuesta: error en insert
 
podes convertirlo de la siguiente manera y vas a recibir un recordset con el formato de fecha DD/MM/YYYY

select convert(smalldatetime,convert(varchar(10),ultimafe cha,103),103) from tabla
where campodatetime between '1900-01-01' and '2079-06-06'


Es importante restringir el rango de fechas que se encuentra en el where porque, son los rangos que maneja el tipo SMALLDATETIME, por ejemplo si en la base de datos hay una fecha cargada y esta supera al 2079 y no tuvieramos aplicado el rango de fechas que especifiqué en el where, entonces no va a funcionar y arrojaría el siguiente error:

Server: Msg 296, Level 16, State 3, Line 1
The conversion of char data type to smalldatetime data type resulted in an out-of-range smalldatetime value
.

Otra cosa es que en el ejemplo devuelve la fecha en formato DD/MM/YYYY porque utilicé 103, en el siguiente link se muestra la tabla completa.

msdn.microsoft.com/es-es/library/ms182418.aspx

Espero que les sirva
Ruben

rgbarbieri 07/08/2009 12:03

Respuesta: error en insert
 
Agrego info respecto al insert y el update

Si la tabla de origen es de tipo DATETIME y la tabla destino es de tipo SMALLDATETIME, con el siguiente update deberias poder realizar el cambio de tipo de datos

Caso del insert:

INSERT INTO "tabla_destino" (id,fecha) SELECT id,convert(smalldatetime,convert(varchar(10),campo fecha_tablaOrigen,103),103)
FROM tabla_origen
WHERE campofecha_tablaOrigen between '1900-01-01' and '2079-06-06'


Caso del Update:

update tabla_destino
set fecha=(select convert(smalldatetime,convert(varchar(10),campofec ha_tablaOrigen,103),103) from tablaOrigen b
where tabla_destino.idusuario=b.idusuario
and campofecha_tablaOrigen between '1900-01-01' and '2079-06-06')


Espero sea de ayuda, cualquier cosa me avisan
Saludos, Ruben


La zona horaria es GMT -6. Ahora son las 00:16.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.