该 Date
数据类型是基于Double
与范围检查(最小值/最大值日期值)加上考虑时期的数据类型.换句话说,它没有什么特别之处,特别是考虑到VBA不是一种强类型语言.
如果你想到连续统一的时间(和你应该的IMO),那么a Double
是一个很好的选择.双精度浮点的精度,其中一天= 1(整数)实际上是九位小数.因此,类型Double
(因此类型Date
)的值可以舒适地容纳亚秒值.
但是,面对的问题是,内VBA时间函数(Now
,DateSerial
,DateDiff
,DateAdd
等)具有的最小粒度1秒.如果您将它们与日期值一起存储为Double
亚秒精度,您将经历四舍五入到一秒.同样为VBA6编写的用户控件等.
您可以编写自己的时间函数实现,当然(我记得必须实现包装类StdDataFormat
,以便读取/写入亚秒级SQL Server值而不会在VBA中转换为MS数据网格)但它将开始感觉你正在滚动自己的时态数据类型(哎哟!)
该 Date
数据类型是基于Double
与范围检查(最小值/最大值日期值)加上考虑时期的数据类型.换句话说,它没有什么特别之处,特别是考虑到VBA不是一种强类型语言.
如果你想到连续统一的时间(和你应该的IMO),那么a Double
是一个很好的选择.双精度浮点的精度,其中一天= 1(整数)实际上是九位小数.因此,类型Double
(因此类型Date
)的值可以舒适地容纳亚秒值.
但是,面对的问题是,内VBA时间函数(Now
,DateSerial
,DateDiff
,DateAdd
等)具有的最小粒度1秒.如果您将它们与日期值一起存储为Double
亚秒精度,您将经历四舍五入到一秒.同样为VBA6编写的用户控件等.
您可以编写自己的时间函数实现,当然(我记得必须实现包装类StdDataFormat
,以便读取/写入亚秒级SQL Server值而不会在VBA中转换为MS数据网格)但它将开始感觉你正在滚动自己的时态数据类型(哎哟!)