You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Access VBA中处理datetime2类型日期?

解决Access中datetime2类型转换报错的问题

问题原因

Access的CDate()和DateValue()函数不支持带有7位微秒的日期字符串,而SQL Server的datetime2类型默认返回的日期格式(如2024-06-04 07:26:19.1466667)包含微秒,导致转换时触发类型不匹配错误。

解决方案

不用放弃datetime2(微软推荐的新类型,比旧datetime范围更广、精度更高),可以通过以下两种方式兼容:

1. 在SQL Server存储过程中预处理日期

直接在存储过程里把datetime2值转换为Access兼容的格式(保留到3位毫秒),避免Access端处理复杂字符串:

-- 转换为yyyy-mm-dd hh:mi:ss.fff格式,Access可直接识别
SELECT CONVERT(varchar(23), YourDateTime2Column, 121) AS CompatibleDateTime
FROM YourTable;

2. 在Access端截取字符串后转换

如果必须在Access中处理带微秒的日期字符串,先截取到毫秒部分再调用转换函数:

' 截取前23位(保留到毫秒)后转日期
?CDate(Left("2024-06-04 07:26:19.1466667", 23))
' 输出结果:2024/6/4 7:26:19

要不要换回datetime类型?

不建议。datetime2是微软官方推荐的新开发首选类型,相比datetime:

  • 支持的日期范围更大(从0001-01-01到9999-12-31,datetime仅支持1753-01-01起)
  • 精度更高(最高7位微秒,datetime仅3位毫秒)
  • 存储效率更优

通过上述转换方案即可解决兼容问题,无需退回旧类型。

内容的提问来源于stack exchange,提问作者TheMortiestMorty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 23:32:34