Wir haben ein sehr seltsames Problem bei der Speicherung von Datum in der Datenbank. GETUTCDATE
Funktion wird in einer gespeicherten Prozedur verwendet, um einen Jobstartzeitstempel und Endzeitstempel zu aktualisieren. Die gespeicherte Prozedur wird vom serverseitigen .net-Code einmal zum Starten und erneut zum Aktualisieren des Endzeitstempels aufgerufen. Das Problem ist, Endzeitstempel 'ist früher als der Startzeitstempel. Ein ähnliches Problem wird in diesem SO question erwähnt, aber es half mir nicht, unser Problem zu lösen.SQL Server DATETIME Diskrepanz
Stored Procedure Code:
@Id int,
@Status int
if (@Status = 3) -- Processing
Begin
Update QUEUE
Set STATUS = @Status,
PROCESSING_START_TIMESTAMP = getutcdate()
Where ID = @Id
End
Else if (@Status = 4) -- Completed
Begin
Update QUEUE
Set STATUS = @Status,
PROCESSING_END_TIMESTAMP = getutcdate()
Where ID = @Id
End
Else -- Failed
Begin
Update QUEUE
Set STATUS = @Status
Where ID = @Id
End
Von vb.net wir diese gespeicherte Prozedur aufrufen setzen Zeitstempel starten, Prozess einige Arbeit und stellen Ende Zeitstempel.
' Set Status to Processing
ldbQueueMaster.SaveStatus(liQueueEntryId, 3)
' Call the Processor
Dim lbCompleted = lQueueProcessor.Processor(lQueueMaster, lsRootPath)
' Set the Status based on Return from the Processor
If (lbCompleted) Then
ldbQueueMaster.SaveStatus(liQueueEntryId,4) 'Completed
Else
ldbQueueMaster.SaveStatus(liQueueEntryId, 5) 'Failed
End If
Ergebnis aus Datenbank:
ID PROCESSING_START_TIMESTAMP PROCESSING_END_TIMESTAMP
-------------- -------------------------------- ----------------------------
9533789 2016-08-03 18:34:22.190 2016-08-03 18:34:22.187
Jede Hilfe würde geschätzt.