Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Ajout de millisecondes à un DateTime dans TSQL INSERT INTO

Je pense que le vrai problème est que RFQ_ID, Action_Time ne devrait pas être une clé primaire. Créer un substitut clé primaire et placez un index non unique sur RFQ_ID, Action_Time .

Mettre à jour :Si vous voulez vraiment vous en tenir à votre conception existante, vous pouvez faire ce que vous avez demandé, mais en utilisant 10 millisecondes au lieu d'une milliseconde entre chaque ligne, pour compenser la faible précision de datetime. Vous pouvez utiliser le numéro de ligne pour déterminer le nombre de millisecondes à ajouter afin d'obtenir un horodatage différent pour chaque ligne :

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