Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Aggiunta di millisecondi a un DateTime in TSQL INSERT INTO

Penso che il vero problema sia che RFQ_ID, Action_Time non dovrebbe essere una chiave primaria. Crea un surrogato chiave primaria e inserire un indice non univoco su RFQ_ID, Action_Time .

Aggiorna :Se vuoi davvero restare fedele al tuo progetto esistente, puoi fare quello che hai chiesto ma usando 10 millisecondi invece di un millisecondo tra ogni riga, per compensare la bassa precisione di datetime. Puoi utilizzare il numero di riga per determinare quanti millisecondi aggiungere in modo da ottenere un timestamp diverso per ogni riga:

INSERT INTO QSW_RFQ_Log
(RFQ_ID, Action_Time, Quote_ID, Note)
SELECT
  RFQ_ID,
  DATEADD(millisecond, 10 * ROW_NUMBER() OVER (ORDER BY Quote_ID), GETDATE()) AS Action_Time,
  Quote_ID,
  'Added to RFQ on Initialization' AS Note
FROM QSW_Quote