Conversion de tipo char a datetime

05/04/2006 - 13:46 por Claudio | Informe spam
Hola

Tengo un problema al convertir un tipo char a un tipo datetime. Uso el
CONVERT(varchar(20),"micampo",103) para cambiar una cadena que me viene en
una tabla no propia a un campo fecha en mi tabla. El tema es que el sql me
tira un error de que no lo puede hacer. Al consultar el help , ahi dice que
la precedencia de tipos es mayor la del datetime que la de char o varchar,
por lo tanto "El tipo de datos con menor precedencia se convierte al tipo de
datos con mayor precedencia", pero a mi me sigue tirando el siguiente error
:
"La conversión del tipo de datos char a datetime produjo un valor datetime
fuera de intervalo.
Se terminó la instrucción." , lo extraño es que la forma en que viene el
string es "dd/mm/yyyy".

En algo me estoy equivocando, pero no se en que. Alguna sugerencia??
Muchas gracias
Claudio

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
05/04/2006 - 14:53 | Informe spam
Claudio,

Si el valor tiene formato "dd/mm/yyyy" entonces te surgiero lo transformes
antes de convertirlo a fecha. Usa el formato yyyymmdd que siempre sera
interpretado correctamente como fecha por sql server independiente del
lenguaje o setting de "dateformat".

declare @s varchar(10)

set @s = '05/04/2006'

select cast(right(@s, 4) + substring(@s, 3, 2) + left(@s, 2) as datetime)
go

AMB

"Claudio" wrote:

Hola

Tengo un problema al convertir un tipo char a un tipo datetime. Uso el
CONVERT(varchar(20),"micampo",103) para cambiar una cadena que me viene en
una tabla no propia a un campo fecha en mi tabla. El tema es que el sql me
tira un error de que no lo puede hacer. Al consultar el help , ahi dice que
la precedencia de tipos es mayor la del datetime que la de char o varchar,
por lo tanto "El tipo de datos con menor precedencia se convierte al tipo de
datos con mayor precedencia", pero a mi me sigue tirando el siguiente error
:
"La conversión del tipo de datos char a datetime produjo un valor datetime
fuera de intervalo.
Se terminó la instrucción." , lo extraño es que la forma en que viene el
string es "dd/mm/yyyy".

En algo me estoy equivocando, pero no se en que. Alguna sugerencia??
Muchas gracias
Claudio



Respuesta Responder a este mensaje
#2 Claudio
05/04/2006 - 15:28 | Informe spam
Hola Alejandro

gracias por la rta. Cambie la parte de la instruccion por el ejemplo tuyo,
pero sigo con el mismo error :
"Error de sintaxis al convertir una cadena de caracteres a datetime."
adjunto el codigo :
insert into valoresencartera
(
idbanco,
nrocheque,
fechaRegistracion,
clearing,
importe,
enCartera,
idDivisa,
Paridad,
conciliado
)
(select
cast(secucarte.banco as int) as "idbanco",
cast(secucarte.nrocheque as varchar(30)) as "NroCheque",
cast(right(femision,4)+ substring(femision,3,2) + left(femision,2) as
datetime) as FechaRegistracion,
CONVERT(CHAR(02), substring(secucarte.femision,4,2)) + '/' +
CONVERT(CHAR(02), substring(secucarte.femision,9,2)) as datetime) as
FechaRegistracion,
cast('0' as int) as "clearing",
cast('0' as float) as "importe",
cast('1' as int) as "enCartera",
cast('2' as int) as "idDivisa",
cast('1' as int) as "paridad",
cast('0' as int) as "conciliado"
from secucarte )
En resumen, quiero agregar registros a una tabla desde otra que tiene todos
los campos como char.El formato del campo que tiene la fecha como string es
dd/mm/yyyy.

Salu2
Claudio

"Alejandro Mesa" escribió en el
mensaje news:
Claudio,

Si el valor tiene formato "dd/mm/yyyy" entonces te surgiero lo transformes
antes de convertirlo a fecha. Usa el formato yyyymmdd que siempre sera
interpretado correctamente como fecha por sql server independiente del
lenguaje o setting de "dateformat".

declare @s varchar(10)

set @s = '05/04/2006'

select cast(right(@s, 4) + substring(@s, 3, 2) + left(@s, 2) as datetime)
go

AMB

"Claudio" wrote:

Hola

Tengo un problema al convertir un tipo char a un tipo datetime. Uso el
CONVERT(varchar(20),"micampo",103) para cambiar una cadena que me viene
en
una tabla no propia a un campo fecha en mi tabla. El tema es que el sql
me
tira un error de que no lo puede hacer. Al consultar el help , ahi dice
que
la precedencia de tipos es mayor la del datetime que la de char o
varchar,
por lo tanto "El tipo de datos con menor precedencia se convierte al tipo
de
datos con mayor precedencia", pero a mi me sigue tirando el siguiente
error
:
"La conversión del tipo de datos char a datetime produjo un valor
datetime
fuera de intervalo.
Se terminó la instrucción." , lo extraño es que la forma en que viene el
string es "dd/mm/yyyy".

En algo me estoy equivocando, pero no se en que. Alguna sugerencia??
Muchas gracias
Claudio



Respuesta Responder a este mensaje
#3 Claudio
05/04/2006 - 17:37 | Informe spam
Ya lo resolvi. El problema no estaba en esa instruccion, sino que habia
"algunos" campos fecha en la tabla secucarte que eran invalidos . >:-(

Gracias
Salu2
Claudio

"Claudio" escribió en el mensaje
news:%
Hola Alejandro

gracias por la rta. Cambie la parte de la instruccion por el ejemplo tuyo,
pero sigo con el mismo error :
"Error de sintaxis al convertir una cadena de caracteres a datetime."
adjunto el codigo :
insert into valoresencartera
(
idbanco,
nrocheque,
fechaRegistracion,
clearing,
importe,
enCartera,
idDivisa,
Paridad,
conciliado
)
(select
cast(secucarte.banco as int) as "idbanco",
cast(secucarte.nrocheque as varchar(30)) as "NroCheque",
cast(right(femision,4)+ substring(femision,3,2) + left(femision,2) as
datetime) as FechaRegistracion,
CONVERT(CHAR(02), substring(secucarte.femision,4,2)) + '/' +
CONVERT(CHAR(02), substring(secucarte.femision,9,2)) as datetime) as
FechaRegistracion,
cast('0' as int) as "clearing",
cast('0' as float) as "importe",
cast('1' as int) as "enCartera",
cast('2' as int) as "idDivisa",
cast('1' as int) as "paridad",
cast('0' as int) as "conciliado"
from secucarte )
En resumen, quiero agregar registros a una tabla desde otra que tiene
todos los campos como char.El formato del campo que tiene la fecha como
string es dd/mm/yyyy.

Salu2
Claudio

"Alejandro Mesa" escribió en el
mensaje news:
Claudio,

Si el valor tiene formato "dd/mm/yyyy" entonces te surgiero lo
transformes
antes de convertirlo a fecha. Usa el formato yyyymmdd que siempre sera
interpretado correctamente como fecha por sql server independiente del
lenguaje o setting de "dateformat".

declare @s varchar(10)

set @s = '05/04/2006'

select cast(right(@s, 4) + substring(@s, 3, 2) + left(@s, 2) as datetime)
go

AMB

"Claudio" wrote:

Hola

Tengo un problema al convertir un tipo char a un tipo datetime. Uso el
CONVERT(varchar(20),"micampo",103) para cambiar una cadena que me viene
en
una tabla no propia a un campo fecha en mi tabla. El tema es que el sql
me
tira un error de que no lo puede hacer. Al consultar el help , ahi dice
que
la precedencia de tipos es mayor la del datetime que la de char o
varchar,
por lo tanto "El tipo de datos con menor precedencia se convierte al
tipo de
datos con mayor precedencia", pero a mi me sigue tirando el siguiente
error
:
"La conversión del tipo de datos char a datetime produjo un valor
datetime
fuera de intervalo.
Se terminó la instrucción." , lo extraño es que la forma en que viene el
string es "dd/mm/yyyy".

En algo me estoy equivocando, pero no se en que. Alguna sugerencia??
Muchas gracias
Claudio









Respuesta Responder a este mensaje
#4 Diego \(DCD\)
05/04/2006 - 19:15 | Informe spam
hola,
si te fijas la fecha que estás pasando es dd/mm/yy

cast(CONVERT(CHAR(02), substring(secucarte.femision,1,2))+'/'+
CONVERT(CHAR(02), substring(secucarte.femision,4,2)) + '/' +
CONVERT(CHAR(02), substring(secucarte.femision,9,2))



debes cambiar a dd/mm/yyy

cast(CONVERT(CHAR(02), substring(secucarte.femision,1,2))+'/'+
CONVERT(CHAR(02), substring(secucarte.femision,4,2)) + '/' +
CONVERT(CHAR(02), substring(secucarte.femision,9,4))



y los CONVERT te sobran no hacen falta.

Un saludo.

"Claudio" escribió en el mensaje
news:%
Hola Alejandro

gracias por la rta. Cambie la parte de la instruccion por el ejemplo tuyo,
pero sigo con el mismo error :
"Error de sintaxis al convertir una cadena de caracteres a datetime."
adjunto el codigo :
insert into valoresencartera
(
idbanco,
nrocheque,
fechaRegistracion,
clearing,
importe,
enCartera,
idDivisa,
Paridad,
conciliado
)
(select
cast(secucarte.banco as int) as "idbanco",
cast(secucarte.nrocheque as varchar(30)) as "NroCheque",
cast(right(femision,4)+ substring(femision,3,2) + left(femision,2) as
datetime) as FechaRegistracion,
CONVERT(CHAR(02), substring(secucarte.femision,4,2)) + '/' +
CONVERT(CHAR(02), substring(secucarte.femision,9,2)) as datetime) as
FechaRegistracion,
cast('0' as int) as "clearing",
cast('0' as float) as "importe",
cast('1' as int) as "enCartera",
cast('2' as int) as "idDivisa",
cast('1' as int) as "paridad",
cast('0' as int) as "conciliado"
from secucarte )
En resumen, quiero agregar registros a una tabla desde otra que tiene
todos los campos como char.El formato del campo que tiene la fecha como
string es dd/mm/yyyy.

Salu2
Claudio

"Alejandro Mesa" escribió en el
mensaje news:
Claudio,

Si el valor tiene formato "dd/mm/yyyy" entonces te surgiero lo
transformes
antes de convertirlo a fecha. Usa el formato yyyymmdd que siempre sera
interpretado correctamente como fecha por sql server independiente del
lenguaje o setting de "dateformat".

declare @s varchar(10)

set @s = '05/04/2006'

select cast(right(@s, 4) + substring(@s, 3, 2) + left(@s, 2) as datetime)
go

AMB

"Claudio" wrote:

Hola

Tengo un problema al convertir un tipo char a un tipo datetime. Uso el
CONVERT(varchar(20),"micampo",103) para cambiar una cadena que me viene
en
una tabla no propia a un campo fecha en mi tabla. El tema es que el sql
me
tira un error de que no lo puede hacer. Al consultar el help , ahi dice
que
la precedencia de tipos es mayor la del datetime que la de char o
varchar,
por lo tanto "El tipo de datos con menor precedencia se convierte al
tipo de
datos con mayor precedencia", pero a mi me sigue tirando el siguiente
error
:
"La conversión del tipo de datos char a datetime produjo un valor
datetime
fuera de intervalo.
Se terminó la instrucción." , lo extraño es que la forma en que viene el
string es "dd/mm/yyyy".

En algo me estoy equivocando, pero no se en que. Alguna sugerencia??
Muchas gracias
Claudio










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