SQL - campo llave que identifique milesimas de segundo

 
Vista:

campo llave que identifique milesimas de segundo

Publicado por Jorge Lopez (7 intervenciones) el 23/01/2004 20:18:12
Tengo una tabla de Logs donde un campo de mi llave es un DATETIME y lo tengo en el insert de mi codigo con GETDATE() esto significa que el valor que graba en mi campo es el instante en que se anexa a mi tabla, el punto es que el sql no me identifica como parte de la llave las milesimas de segundo del DATETIME y cuando intenta insertar en mi tabla un registro con el mismo segundo que el anterior me marca un error de Duplicate Primery Key y no lo deja insertar, y no quiero aumentar los campo de llave porque eso ocacionaria un cambio muy grande en mi sistema, hay forma de que la llave sea reconocida con todo y milesimas de segundo??, eso daria la diferencia entre registro y registro...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:campo llave que identifique milesimas de segund

Publicado por Isaías Islas (5072 intervenciones) el 24/01/2004 00:33:22
Hola

¿milesimas de segundo?, pues creo que no, el formato de los campos tipo DATE en SQL Server, son

YYYY-MM-DD HH:MM:SS:NNN

Que yo sepa, no maneja las MILESIMAS DE SEGUNDO.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:campo llave que identifique milesimas de segund

Publicado por Jorge Lopez (7 intervenciones) el 24/01/2004 01:14:13
YYYY-MM-DD HH:MM:SS:NNN
que unidades se supone que son las NNN talvez estoy confundido pero yo crei que son milesimas de segundo, o no??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:campo llave que identifique milesimas de segund

Publicado por Isaías Islas (5072 intervenciones) el 26/01/2004 19:47:57
Copiado filemente de la ayuda de SQL:

Los milisegundos se pueden preceder de dos puntos (:) o un punto (.). Si se preceden de dos puntos, el número significa milésimas de segundo. Si se precede de un punto, un único dígito significa décimas de segundo, dos dígitos significa centésimas de segundo y tres dígitos significa milésimas de segundo. Por ejemplo, 12:30:20:1 indica las 12:30, veinte segundos y una milésima; 12:30:20.1 indica las 12:30, veinte segundos y una décima.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:campo llave que identifique milesimas de segund

Publicado por Jorge Lopez (7 intervenciones) el 26/01/2004 20:34:22
Ok el formato ya lo entendi, el problema es que tengo una tabla definida de la siguiente manera...
Campo :
Moviemiento Numeric (8,2)
Fecha Datetime
Detalle Char (15)
Comentarios Char (40)

en donde mi primary key es venta y fecha en mi tabla se registran 2 movimientos en el mismo segundo pero con diferente milesima de segundo, pero SQL no reconoce las milesimas de segundo como parte del valor del datetime y cuando intenta grabar el segundo registro en el mismo segundo marca el SQL duplicate key y no me deja grabar.
Ejemplo
Movimiento fecha
10254 2003-10-02 05:53:55.125
10254 2003-10-02 05:53:55.892
Esto ocaciona un duplicate key porque estan en el mismo segundo aun teniendo las milesimas de segundo diferentes, como puedo hacer para que las milesimas de segundo hagan la diferencia en la llave de mi tabla???...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:campo llave que identifique milesimas de segund

Publicado por Isaías Islas (5072 intervenciones) el 26/01/2004 23:12:14
Amigo, yo hice las pruebas con los datos que me envio y no recibi ningun mensaje de error, le mando el script.

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PRUEBAS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[PRUEBAS]
GO

CREATE TABLE [dbo].[PRUEBAS] (
[ID_PRUEBAS] [int] NOT NULL ,
[FD_PRUEBAS] [datetime] NOT NULL
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[PRUEBAS] WITH NOCHECK ADD
CONSTRAINT [PK_PRUEBAS] PRIMARY KEY CLUSTERED
(
[ID_PRUEBAS],
[FD_PRUEBAS]
) ON [PRIMARY]

INSERT INTO PRUEBAS VALUES(10254, '2003-10-02 05:53:55.125')
INSERT INTO PRUEBAS VALUES(10254, '2003-10-02 05:53:55.892')

SELECT * FROM PRUEBAS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar