【发布时间】:2020-07-11 17:29:38
【问题描述】:
我在 Access VBA 中使用 Date 语句编写了一些代码。直到本月初它工作正常,但现在我看到日期已自动将格式从 dd/mm/yyyy 更改为 mm/dd/yyyy。有没有其他人遇到过同样的问题?
【问题讨论】:
我在 Access VBA 中使用 Date 语句编写了一些代码。直到本月初它工作正常,但现在我看到日期已自动将格式从 dd/mm/yyyy 更改为 mm/dd/yyyy。有没有其他人遇到过同样的问题?
【问题讨论】:
无论区域设置如何,默认的 Access SQL 日期格式都是 mm/dd/yyyy。如果您使用无效的日期格式,它会“有帮助地”尝试将其转换为您的有效日期。
因此,如果您使用“30/09/2008”,它会识别出您正在使用 dd/mm/yyyy,并进行适当的转换。但是,像 '10/01/2008' 这样的值是一个有效的 mm/dd/yyyy 值,因此它不会被转换,并且存储不正确,以防您实际上是指 dd/mm/yyyy ....
解决方案是始终将日期值转换为 mm/dd/yyyy 字符串,然后再在 Access SQL 语句中使用它们。您必须在这里小心一点,因为使用 VBA 日期格式掩码可能无法完全按照您在非美国语言环境中的预期工作(例如,“有帮助”将“mm/dd/yyyy”解释为“本地化短日期格式” ),因此请使用您的特定 Access/VBA 版本仔细测试。
【讨论】:
访问需要一个明确的日期。通常建议您使用 yyyy/mm/dd,无论语言环境如何。例如:
strSQL="SELECT SomeDate FROM tblT WHERE SomeDate=#" & Format(DateVar, "yyyy/mm/dd") & "#"
【讨论】:
试试这个代码:
stLinkCriteria = "[ProjectDate] Between #" & Format(CDate(Me![txtDateFrom]), "mm/dd/yyyy") & "# And #" & Format(CDate(Me![txtDateTo]), "mm/dd/yyyy") & "#"
它对我有用。
【讨论】:
我使用 datevalue() 函数非常成功。从未绑定控件获取日期时,它似乎足够聪明地正确解释格式“dd/mm/yyyy”。因此,像
这样的 Jet SQL 查询"Select * from DateTable where StartDate = datevalue(" & me!TxtStartDate & ");"
似乎每次都有效。
【讨论】:
这行得通:
sentenciaSQL = "UPDATE Numeraciones " & _
"SET Valor = " & Valor & ", " & _
"Fecha = #" & **Format(fecha,"mm/dd/yyyy HH:nn:ss") & "#, " &** _
"Id_Usuario = " & Id_Usuario & _
" WHERE Nombre = '" & Nombre & "'"
【讨论】: