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

Access 2003插入UK格式日期被转为US格式的解决问询

解决Access 2003插入日期时格式混淆的问题

这个问题的核心是Access解析#包裹的日期字符串时,会遵循系统区域设置的日期格式——如果你的系统默认是MM/dd/yyyy(美式格式),那么#07/01/2019#就会被自动解析为2019年7月1日,而不是你预期的1月7日。之前用Format(qtyPrice.dateQuoted, "dd/MM/yyyy")没用,是因为即使你生成了07/01/2019这样的字符串,Access还是会按系统规则去“猜”哪个是月哪个是日,结果依然出错。

下面给你两个可靠的解决方法,按推荐程度排序:

方法1:使用参数化查询(最推荐)

参数化查询会直接传递日期的数值类型,而不是转成字符串,完全跳过格式解析的环节,同时还能避免SQL注入风险,代码更健壮。示例代码如下:

' 假设你已经有一个打开的ADODB.Connection对象(比如conn)
Dim cmd As New ADODB.Command
Set cmd.ActiveConnection = conn

' 定义带参数的SQL语句,用?作为占位符
cmd.CommandText = "INSERT INTO [stockQuantities] " & _
                  "([stockCode], [description], [productGroup], [qtyFrom], [price], [dateQuoted]) " & _
                  "VALUES (?, ?, ?, ?, ?, ?)"

' 逐个添加参数,指定类型和值
cmd.Parameters.Append cmd.CreateParameter("stockCode", adVarChar, adParamInput, 50, qtyPrice.code)
cmd.Parameters.Append cmd.CreateParameter("description", adVarChar, adParamInput, 255, qtyPrice.desc)
cmd.Parameters.Append cmd.CreateParameter("productGroup", adVarChar, adParamInput, 50, qtyPrice.group)
cmd.Parameters.Append cmd.CreateParameter("qtyFrom", adDouble, adParamInput, , qtyPrice.qty)
cmd.Parameters.Append cmd.CreateParameter("price", adCurrency, adParamInput, , qtyPrice.price)
cmd.Parameters.Append cmd.CreateParameter("dateQuoted", adDate, adParamInput, , qtyPrice.qDate)

' 执行插入
cmd.Execute

方法2:强制使用ISO日期格式(yyyy-MM-dd)

Access对yyyy-MM-dd格式的日期字符串有特殊处理,无论系统区域设置如何,都会正确解析为年-月-日。你只需要修改SQL中日期的拼接部分:

把原来的:

"#, #" & qtyPrice.qDate & "#);"

改成:

"#, #" & Format(qtyPrice.qDate, "yyyy-MM-dd") & "#);"

修改后的SQL语句会变成:

INSERT INTO [stockQuantities] ([stockCode], [description], [productGroup], [qtyFrom], [price], [dateQuoted]) VALUES ("010010000", "R&B BOT Gl Etched 100ml Temple Spa Logo", "PACK", 100, 98, #2019-01-07#);

这样Access就会明确识别这是2019年1月7日。

不推荐的方法:修改系统区域设置

你可以把系统的短日期格式改成dd/MM/yyyy,这样Access就能正确解析#07/01/2019#,但这个方法只适合你自己的机器——如果程序要分发给其他用户,他们的系统设置可能不一样,问题会再次出现,所以不建议这么做。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:37:04