访问日期问题 - dd / mm自动更改为mm / dd

时间:2008-10-09 10:20:51

标签: ms-access access-vba ms-office

我使用Access VBA中的Date语句编写了一些代码。它工作正常,直到本月初,但现在我发现日期已自动将格式从dd/mm/yyyy更改为mm/dd/yyyy。还有其他人遇到过同样的问题吗?

5 个答案:

答案 0 :(得分:8)

默认的Access SQL日期格式,无论区域设置如何,都是mm / dd / yyyy。如果您使用无效的日期格式,它将“帮助”尝试将其转换为您的有效日期。

所以,如果你使用'30 / 09/2008',它会识别你正在使用dd / mm / yyyy,并适当地转换它。但是,像'10 / 01/2008'这样的值是一个有效的mm / dd / yyyy值,因此它不会被转换,并且如果您实际意味着dd / mm / yyyy .... / p>

解决方案是在Access SQL语句中使用它们之前始终将日期值转换为mm / dd / yyyy字符串。你必须要小心一点,因为使用VBA日期格式掩码可能无法完全按照你在非美国语言环境中的预期工作(例如'帮助'将“mm / dd / yyyy”解释为“本地化的短日期格式” ),所以请使用您特定的Access / VBA版本仔细测试。

答案 1 :(得分:3)

访问要求日期明确无误。通常建议您使用yyyy / mm / dd,而不管语言环境如何。例如:

strSQL="SELECT SomeDate FROM tblT WHERE SomeDate=#" & Format(DateVar, "yyyy/mm/dd") & "#"

答案 2 :(得分:1)

试试这段代码:

stLinkCriteria = "[ProjectDate] Between #" & Format(CDate(Me![txtDateFrom]), "mm/dd/yyyy") & "# And #" & Format(CDate(Me![txtDateTo]), "mm/dd/yyyy") & "#"

它对我有用。

答案 3 :(得分:0)

我使用datevalue()函数非常成功。从未绑定控件获取日期时,似乎足够聪明地正确解释格式“dd / mm / yyyy”。因此,像

这样的Jet SQL查询

"Select * from DateTable where StartDate = datevalue(" & me!TxtStartDate & ");"

似乎每次都有效。

答案 4 :(得分:0)

这有效:

sentenciaSQL = "UPDATE Numeraciones " & _
"SET Valor = " & Valor & ", " & _
"Fecha = #" & **Format(fecha,"mm/dd/yyyy HH:nn:ss") & "#, " &** _
"Id_Usuario = " & Id_Usuario & _
" WHERE Nombre = '" & Nombre & "'"