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

如何在vb6中取消修剪日期(必须显示毫秒)。日期来自sybase中的存储过程,vb6,Vb6,使用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

使用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
私有函数TestDatetimeOutputValue(dInput as Date)as Date
Dim cmd作为新的ADODB.Command
使用cmd
.Parameters.Append.CreateParameter(“@Input”,adDBTimeStamp,8,dInput)
.Parameters.Append.CreateParameter(“@Output”,adDBTimeStamp,adParamOutput,8,dInput)
.执行
如果不是IsEmpty(.Parameters(“@Output”).Value),则
TestDatetimeOutputValue=.Parameters(“@Output”).Value
如果结束
以
端函数

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

一个
adDBTimeStamp
字段不是VB日期类型。通过轻松地将其值赋给已转换的日期变量,可以将其截断以适合

您可以选择如何携带这些值,以便在VB6中使用它们。一个选项可能是带有日期字段和长或整数(用于保存毫秒)的UDT。另一种可能是计算存储在十进制或货币类型变量中的内容,例如,将日期值放大到一个整数部分,并将ms作为小数部分添加进去