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

标签 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

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 变量,你已经转换它,截断它以适合。

参见 How To Get Fractions of a Second from ADO adDBTimeStamp Field . archive

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

关于vb6 - 如何取消修剪 vb6 中的日期(必须出现毫秒)。日期来自 sybase 中的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17287026/

相关文章:

mysql - ODBC 5.1 驱动程序 [mysqld-5.1.41] 语法错误

vb6 - 在条件 vb6 时执行

.net - 未找到 DllRegisterServer 入口点 - 注册 Vb.NET DLL 时?

c# - VB6 到 VB.NET 转换按钮样式

excel - 从 VB6 读取 XLS 文件

vb6 - Visual Basic 中的 SendKeys() 权限被拒绝错误

vb6 - 编辑框更新时如何收到通知

.net - 记录依赖树

vba - 最大和最小时间查询

sql-server - SQL SERVER 2008 Select 语句