datetime y los milisegundos

18/10/2005 - 14:10 por Crandell | Informe spam
Hola y gracias por anticipado.

He creado un atributo del tipo "datetime" porque necesito almacenar la fecha
y hora hasta más allá de los segundos (aunque tampoco me es necesario
llegarhasta la precisión de 3,33 milisegundos que me proporciona dicho tipo
de dato).

El problema es que, aunque almacena bien la información en la forma
"dd/mm/aaaa hh:mm:ss", cuando intento almacenar con el formato "dd/mm/aaaa
hh:mm:ss.sss" me aparece el siguiente mensaje de error:

"El valor que ha escrito no es coherente con el tipo de datos o el valor de
la columna".

En definitiva, sólo puedo almacenar con la precisión de un segundo y
necesitaría un poco más de precisión. ¿Qué es lo que hago mal?.

Preguntas similare

Leer las respuestas

#6 Crandell
20/10/2005 - 08:45 | Informe spam
No tengo problemas en obtener los milisegundos con la función getdate, sino
en insertarlo con la precisión de milisegundos en un campo definido como
datetime, ya que SQL me responde que "El valor que ha escrito no es
coherente con el tipo de datos o el valor de la columna".


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

cuando trabajes con tipos de datos smalldatetime y datetime, usa el


formato
ISO (ve la funcion CONVERT en los libros en linea, especialmente los


estilos
112 y 126) para que sql server pueda interpretar correctamente los valores
sin importar el seteo de "set dateformat" ni el lenguaje con que se


instalo
sql server. Acuerdate que el rango de valores son diferentes para ambos


tipos
y que los smalldatetime tienen una precision hasta el minuto.

select cast('2005-10-18T20:57:25.235' as datetime)


AMB

"Crandell" wrote:

> Hola y gracias por anticipado.
>
> He creado un atributo del tipo "datetime" porque necesito almacenar la


fecha
> y hora hasta más allá de los segundos (aunque tampoco me es necesario
> llegarhasta la precisión de 3,33 milisegundos que me proporciona dicho


tipo
> de dato).
>
> El problema es que, aunque almacena bien la información en la forma
> "dd/mm/aaaa hh:mm:ss", cuando intento almacenar con el formato


"dd/mm/aaaa
> hh:mm:ss.sss" me aparece el siguiente mensaje de error:
>
> "El valor que ha escrito no es coherente con el tipo de datos o el valor


de
> la columna".
>
> En definitiva, sólo puedo almacenar con la precisión de un segundo y
> necesitaría un poco más de precisión. ¿Qué es lo que hago mal?.
>
>
>
Respuesta Responder a este mensaje
#7 Carlos Sacristán
20/10/2005 - 09:23 | Informe spam
Prueba con el formato ANSI: "aaaammdd hh:mn:ss.sss"


Un saludo

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

"Crandell" escribió en el mensaje
news:
En ese artículo se dan respuestas a cómo consultar los campos fecha, pero


mi
problema no es de consulta, sino de inserción.

Lo que necesito es insertar con la precisión de milisegundos en campos
definidos como datetime, ya que SQL me responde que "El valor que ha
escrito no es coherente con el tipo de datos o el valor de la columna".


"Maxi" escribió en el mensaje
news:%23z8BeE%
> Hola, es que la informacion no se almacena asi.
>
> Mira este articulo
>
>


http://www.microsoft.com/spanish/ms...art157.asp
>
>
> Salu2
> Maxi [MVP SQL SERVER]
>
>
> "Crandell" escribió en el mensaje
> news:%
> > Hola y gracias por anticipado.
> >
> > He creado un atributo del tipo "datetime" porque necesito almacenar la
> > fecha
> > y hora hasta más allá de los segundos (aunque tampoco me es necesario
> > llegarhasta la precisión de 3,33 milisegundos que me proporciona dicho
> > tipo
> > de dato).
> >
> > El problema es que, aunque almacena bien la información en la forma
> > "dd/mm/aaaa hh:mm:ss", cuando intento almacenar con el formato
"dd/mm/aaaa
> > hh:mm:ss.sss" me aparece el siguiente mensaje de error:
> >
> > "El valor que ha escrito no es coherente con el tipo de datos o el


valor
> > de
> > la columna".
> >
> > En definitiva, sólo puedo almacenar con la precisión de un segundo y
> > necesitaría un poco más de precisión. ¿Qué es lo que hago mal?.
> >
> >
>
>


Respuesta Responder a este mensaje
#8 Crandell
20/10/2005 - 09:41 | Informe spam
Pues lo intento así y me da el mismo error, es decir, que lo que he escrito
no es coherente...

"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:
Prueba con el formato ANSI: "aaaammdd hh:mn:ss.sss"


Un saludo

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

"Crandell" escribió en el mensaje
news:
> En ese artículo se dan respuestas a cómo consultar los campos fecha,


pero
mi
> problema no es de consulta, sino de inserción.
>
> Lo que necesito es insertar con la precisión de milisegundos en campos
> definidos como datetime, ya que SQL me responde que "El valor que ha
> escrito no es coherente con el tipo de datos o el valor de la columna".
>
>
> "Maxi" escribió en el mensaje
> news:%23z8BeE%
> > Hola, es que la informacion no se almacena asi.
> >
> > Mira este articulo
> >
> >
http://www.microsoft.com/spanish/ms...art157.asp
> >
> >
> > Salu2
> > Maxi [MVP SQL SERVER]
> >
> >
> > "Crandell" escribió en el mensaje
> > news:%
> > > Hola y gracias por anticipado.
> > >
> > > He creado un atributo del tipo "datetime" porque necesito almacenar


la
> > > fecha
> > > y hora hasta más allá de los segundos (aunque tampoco me es


necesario
> > > llegarhasta la precisión de 3,33 milisegundos que me proporciona


dicho
> > > tipo
> > > de dato).
> > >
> > > El problema es que, aunque almacena bien la información en la forma
> > > "dd/mm/aaaa hh:mm:ss", cuando intento almacenar con el formato
> "dd/mm/aaaa
> > > hh:mm:ss.sss" me aparece el siguiente mensaje de error:
> > >
> > > "El valor que ha escrito no es coherente con el tipo de datos o el
valor
> > > de
> > > la columna".
> > >
> > > En definitiva, sólo puedo almacenar con la precisión de un segundo y
> > > necesitaría un poco más de precisión. ¿Qué es lo que hago mal?.
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#9 Carlos Sacristán
20/10/2005 - 10:59 | Informe spam
Tiene que ser otro el error. Prueba a ejecutar esta sentencia y verás
que es correcta:

SELECT ('20051020 00:00:00.000' AS SMALLDATETIME) as [smalldatetime],
CAST('20051020 00:00:00.000' AS DATETIME) as [datetime]


Un saludo

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

"Crandell" escribió en el mensaje
news:eZGM#
Pues lo intento así y me da el mismo error, es decir, que lo que he


escrito
no es coherente...

"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:
> Prueba con el formato ANSI: "aaaammdd hh:mn:ss.sss"
>
>
> Un saludo
>
> -
> "Sólo sé que no sé nada. " (Sócrates)
>
> "Crandell" escribió en el mensaje
> news:
> > En ese artículo se dan respuestas a cómo consultar los campos fecha,
pero
> mi
> > problema no es de consulta, sino de inserción.
> >
> > Lo que necesito es insertar con la precisión de milisegundos en campos
> > definidos como datetime, ya que SQL me responde que "El valor que ha
> > escrito no es coherente con el tipo de datos o el valor de la


columna".
> >
> >
> > "Maxi" escribió en el mensaje
> > news:%23z8BeE%
> > > Hola, es que la informacion no se almacena asi.
> > >
> > > Mira este articulo
> > >
> > >
>


http://www.microsoft.com/spanish/ms...art157.asp
> > >
> > >
> > > Salu2
> > > Maxi [MVP SQL SERVER]
> > >
> > >
> > > "Crandell" escribió en el mensaje
> > > news:%
> > > > Hola y gracias por anticipado.
> > > >
> > > > He creado un atributo del tipo "datetime" porque necesito


almacenar
la
> > > > fecha
> > > > y hora hasta más allá de los segundos (aunque tampoco me es
necesario
> > > > llegarhasta la precisión de 3,33 milisegundos que me proporciona
dicho
> > > > tipo
> > > > de dato).
> > > >
> > > > El problema es que, aunque almacena bien la información en la


forma
> > > > "dd/mm/aaaa hh:mm:ss", cuando intento almacenar con el formato
> > "dd/mm/aaaa
> > > > hh:mm:ss.sss" me aparece el siguiente mensaje de error:
> > > >
> > > > "El valor que ha escrito no es coherente con el tipo de datos o el
> valor
> > > > de
> > > > la columna".
> > > >
> > > > En definitiva, sólo puedo almacenar con la precisión de un segundo


y
> > > > necesitaría un poco más de precisión. ¿Qué es lo que hago mal?.
> > > >
> > > >
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#10 Crandell
21/10/2005 - 10:08 | Informe spam
Gracias por tu consejo, pero creo que no me he explicado bien. Lo expondré
de otra manera:

Si, por ejemplo, haciendo uso del "SQL Server Enterprise Manager" intento
insertar un registro en una tabla, la cual contenga un atributo del tipo
"datetime", y directamente sobre dicho atributo tecleo la fecha y hora
(incluyendo los milisegundos) en el formato de fecha que tengo definido,
entonces me da el error "El valor que ha escrito no es coherente con el tipo
de datos o el valor de la columna".

He hecho las siguientes pruebas:

Si tecleo '01/10/2005' --> funciona
Si tecleo '13:18:28' --> funciona
Si tecleo '01/10/2005 13:18:28' --> funciona
Pero si tecleo '01/10/2005 13:18:28.000' --> no funciona, aparece el
mensaje antes citado.

En realidad parece que el atributo que definí como datetime no quisiera
almacenar los milisegundos.



"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:%
Tiene que ser otro el error. Prueba a ejecutar esta sentencia y verás
que es correcta:

SELECT ('20051020 00:00:00.000' AS SMALLDATETIME) as [smalldatetime],
CAST('20051020 00:00:00.000' AS DATETIME) as [datetime]


Un saludo

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

"Crandell" escribió en el mensaje
news:eZGM#
> Pues lo intento así y me da el mismo error, es decir, que lo que he
escrito
> no es coherente...
>
> "Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
> news:
> > Prueba con el formato ANSI: "aaaammdd hh:mn:ss.sss"
> >
> >
> > Un saludo
> >
> > -
> > "Sólo sé que no sé nada. " (Sócrates)
> >
> > "Crandell" escribió en el mensaje
> > news:
> > > En ese artículo se dan respuestas a cómo consultar los campos fecha,
> pero
> > mi
> > > problema no es de consulta, sino de inserción.
> > >
> > > Lo que necesito es insertar con la precisión de milisegundos en


campos
> > > definidos como datetime, ya que SQL me responde que "El valor que


ha
> > > escrito no es coherente con el tipo de datos o el valor de la
columna".
> > >
> > >
> > > "Maxi" escribió en el mensaje
> > > news:%23z8BeE%
> > > > Hola, es que la informacion no se almacena asi.
> > > >
> > > > Mira este articulo
> > > >
> > > >
> >
http://www.microsoft.com/spanish/ms...art157.asp
> > > >
> > > >
> > > > Salu2
> > > > Maxi [MVP SQL SERVER]
> > > >
> > > >
> > > > "Crandell" escribió en el mensaje
> > > > news:%
> > > > > Hola y gracias por anticipado.
> > > > >
> > > > > He creado un atributo del tipo "datetime" porque necesito
almacenar
> la
> > > > > fecha
> > > > > y hora hasta más allá de los segundos (aunque tampoco me es
> necesario
> > > > > llegarhasta la precisión de 3,33 milisegundos que me proporciona
> dicho
> > > > > tipo
> > > > > de dato).
> > > > >
> > > > > El problema es que, aunque almacena bien la información en la
forma
> > > > > "dd/mm/aaaa hh:mm:ss", cuando intento almacenar con el formato
> > > "dd/mm/aaaa
> > > > > hh:mm:ss.sss" me aparece el siguiente mensaje de error:
> > > > >
> > > > > "El valor que ha escrito no es coherente con el tipo de datos o


el
> > valor
> > > > > de
> > > > > la columna".
> > > > >
> > > > > En definitiva, sólo puedo almacenar con la precisión de un


segundo
y
> > > > > necesitaría un poco más de precisión. ¿Qué es lo que hago mal?.
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida