【发布时间】:2016-08-29 20:34:27
【问题描述】:
我们在数据库中存储日期时间时遇到了一个非常奇怪的问题。 GETUTCDATE 函数在存储过程中用于更新作业开始时间戳和结束时间戳。存储过程从服务器端 .net 代码调用一次以启动并再次更新结束时间戳。问题是“结束时间戳”早于开始时间戳。这个SO question 中提到了类似的问题,但它并没有帮助我解决我们的问题。
存储过程代码:
@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
从 vb.net 我们调用这个存储过程来设置开始时间戳,处理一些工作并设置结束时间戳。
' 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
来自数据库的结果:
ID PROCESSING_START_TIMESTAMP PROCESSING_END_TIMESTAMP
-------------- -------------------------------- ----------------------------
9533789 2016-08-03 18:34:22.190 2016-08-03 18:34:22.187
任何帮助将不胜感激。
【问题讨论】:
标签: sql-server vb.net tsql