如何在vb6中取消修剪日期(必须显示毫秒).日期来自sybase中的存储过程



我遇到了使用ADO将完整日期时间值从VB6传递到sybase的问题。似乎忽略了毫秒。

下面是存储过程的示例代码:

CREATE PROCEDURE dbo.usp_ReturnDatetimeInput (
  @Input datetime, 
  @Output datetime output
)
AS
--Show input value
print '@Input = ' + convert(varchar(20), @Input, 14)
set @Output = @Input
GO

vb6代码

Private Function TestDatetimeOutputValue(dInput as Date) As Date
  Dim cmd As New ADODB.Command
  With cmd
  <snip>
  .Parameters.Append .CreateParameter("@Input", adDBTimeStamp, , 8, dInput)
  .Parameters.Append .CreateParameter("@Output", adDBTimeStamp, adParamOutput, 8, dInput)
  .Execute
  If Not IsEmpty(.Parameters("@Output").Value) Then
    TestDatetimeOutputValue = .Parameters("@Output").Value
  End If
  End With
End Function

adDBTimeStamp字段不是VB日期类型。通过轻松地将其值分配给Date变量,您已经转换了它,并将其截断以适应。

请参阅如何从ADO adDBTimeStamp字段中获取秒的分数档案

您可以选择如何携带这些值以在VB6中使用它们。一个选项可能是一个UDT,它有一个Date字段和一个Long或Integer来保存毫秒。另一种方法可能是计算存储在Decimal或Currency类型变量中的内容,例如,将Date值缩放为一整部分,并将ms作为小数部分添加。

VB6不在日期数据类型中存储毫秒。所以…传递给过程的值已经删除了毫秒。

最新更新