Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Hinzufügen von Millisekunden zu einer DateTime in TSQL INSERT INTO

Ich denke, das eigentliche Problem ist, dass RFQ_ID, Action_Time sollte kein Primärschlüssel sein. Erstellen Sie einen Ersatz Primärschlüssel und setzen Sie einen nicht eindeutigen Index auf RFQ_ID, Action_Time .

Aktualisieren :Wenn Sie wirklich bei Ihrem bestehenden Design bleiben möchten, können Sie tun, was Sie gefragt haben, aber 10 Millisekunden anstelle von einer Millisekunde zwischen jeder Zeile verwenden, um die geringe Genauigkeit von datetime zu kompensieren. Sie können die Zeilennummer verwenden, um zu bestimmen, wie viele Millisekunden hinzugefügt werden müssen, damit Sie für jede Zeile einen anderen Zeitstempel erhalten:

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