Date
数据类型的精确度(通过几分之一秒)?我在缺席多年后重访VB6,因为我的生活不记得我曾经知道的事情。我考虑在这上面放一个memory-leak标签,因为我的记忆泄露了(赶紧冲了过去)。
之后我发现了这个API调用,它似乎有效:
Declare Sub GetSystemTime Lib "kernel32.dll" (lpSystemTime As SystemTime)
Public Type SystemTime
Year As Integer
Month As Integer
DayOfWeek As Integer
Day As Integer
Hour As Integer
Minute As Integer
Second As Integer
Milliseconds As Integer
End Type
答案 0 :(得分:9)
Date
数据类型基于带有范围检查的Double
数据类型(最小/最大日期值)加上考虑的时期。换句话说,没有什么特别之处,特别是考虑到VBA不是强类型语言。
如果你想到一个连续统一体的时间(和IMO你应该),那么Double
是一个不错的选择。双精度浮点的精度,其中一天= 1(整数)实际上是九位小数。因此,类型Double
(因此类型为Date
)的值可以轻松容纳亚秒值。
但是,您面临的问题是VBA中的时态函数(Now
,DateSerial
,DateDiff
,DateAdd
等)的最小粒度为 1第二即可。如果将它们与日期值一起存储为Double
并具有亚秒精度,则会经历四舍五入到一秒。同样为VBA6编写的用户控件等。
你可以编写自己需要的时间函数的实现,当然(我记得必须为StdDataFormat
实现包装类,以便读取/写入亚秒级SQL Server值而不用在VBA中四舍五入到MS数据网格中)但它会开始感觉你正在滚动自己的时态数据类型(哎哟!)
答案 1 :(得分:3)
1)仅秒,
2)没有办法。
答案 2 :(得分:1)
我认为VB6中的Date数据类型无法处理几分之一。